розмір основного файлу з ulimit


12

Моє запитання, мабуть, не стосується Ubuntu зокрема, але, оскільки на моєму робочому столі працює ця ОС, я прийшов на цей форум.

Я намагаюся змінити розмір основного файлу за допомогою ulimit -cкоманди наступним чином:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7959
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Зміна обмеження:

$ ulimit -c unlimited

Спостереження за результатом:

$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7959
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Дійсно межа змінюється. Однак, коли я відкриваю інший термінал і перевіряю значення, я все одно бачу нульове значення в розмірі основного файлу.

Запитання:

  1. Чи ulimitвпливають зміни, виконані за допомогою команди, лише на поточний процес, тобто в цьому випадку bash?
  2. Я запускаю програму з оболонки як передній або фоновий процес. Чи ulimitзміна стосується нового процесу?
  3. Як зробити так, щоб ця конфігурація впливала на всі користувацькі процеси?

1
Ви шукали його, перш ніж запитувати? serverfault.com/questions/637212/increasing-ulimit-on-centos
kenn

Відповіді:


10

ulimit є вбудованою оболонкою, і таким чином впливає лише на поточну оболонку, і процеси, розпочаті цим оболонкою:

$ type ulimit
ulimit is a shell builtin

Від man ulimit:

The  ulimit  utility  shall  set  or report the file-size writing limit
imposed on files written by the shell and its child processes (files of
any  size  may be read). Only a process with appropriate privileges can
increase the limit.

Отже, так, впливають на дитячі процеси.

Щоб встановити обмеження постійно або для всіх процесів, відредагуйте /etc/security/limits.confта перезавантажте. Приклади на сторінці роботи досить хороші. Вам просто потрібно додати щось на кшталт:

username - core unlimited

Дякую. За manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html Чи є ulimitтакож зовнішньою командою, окрім як команда bash вбудована?
Тім

@Tim цитуючи сторінку, на яку ви пов’язані: "Оскільки ulimit впливає на поточне середовище виконання оболонки, він завжди надається як звичайний вбудований оболонку."
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.