Я пытаюсь записать решение для другого пользователя, когда я заметил, что sudo ulimit-c возвращает команду, не найденную. Таким образом я попробовал это:
$ sudo ulimit -c
sudo: ulimit: command not found
$ ulimit -c
0
$ sudo -i
# ulimit -c
0
так... это работает от корня, и это работает с sudo, но не с sudo. Действительно ли это - ошибка?
ulimit
оболочка встроенная команда как cd
Вы не можете использовать как:
sudo cd /test/
так же Вы не можете использовать
sudo ulimit -c
Это не отдельная программа. sudo
ищет двоичный файл для выполнения, но существует нет ulimit
двоичный файл.
Если Вы хотите изменить свой предел затем, можно определить пределы в limits.conf
файл. Те пределы определяются в /etc/security/limits.conf
или /etc/security/limits.d/
. можно взять справку от этого вопроса
или
используйте оболочку как:
sudo sh -c "ulimit -c"
sudo bash -c "ulimit -c"
sudo bash -c ulimit
sudo sh -c "ulimit -n"
Действительно ли это - ошибка?
Нет. sudo
не знает о командах, которые встроены к различным оболочкам, как ulimit
и cd
.
Вам подарили два способа обратиться к этому — использование оболочки как посредник и корректировка пределов в другом месте, чем на самой командной строке. Вот одна треть для ситуаций, когда каждый пытается использовать такие команды для создания модификаций, чтобы обработать состояние, а не отобразить его.
Если можно было бы выполнить оболочку builtins как sudo ulimit …
или sudo cd …
на самом деле изменить состояние процесса, которое не было бы особенно полезно. Это не выполнило бы ничто иное впоследствии в процессе, пределы которого или рабочий каталог были изменены. Можно было бы скорректировать пределы процесса или рабочий каталог только для непосредственного выхода из процесса.
Но существуют наборы инструментов с загружающими цепочку внешними командами с этими функциями. Они делают то же самое, поскольку оболочка builtins, но также и цепочка загружаются к другой программе после того, как они сделали так.
Они - различные наборы инструментов daemontools-семейства — daemontools, daemontools-вызов-на-бис, еда, perp, s6, freedt, и runit.
Инструменты для установления пределов и затем цепочки, загружающейся к другой программе, по-разному softlimit
(daemontools), softlimit
(freedt), softlimit
(daemontools-вызов-на-бис) softlimit
(еда), s6-softlimit
(s6), chpst
(runit), и runlimit
(perp). Таким образом, можно было выполнить, скажем, энергию с измененным базовым пределом размера файла с помощью daemontools, daemontools-вызовом-на-бис, едой или freedt с командой:
sudo softlimit -c 0 vim
еда также имеет подобное ulimit
управляйте, чтобы использовал различные размеры единицы для различных пределов тем используемым с softlimit
:
sudo ulimit -c 0 vim
То же идет для изменения каталога, для которого существует еда chdir
внешняя загружающая цепочку команда:
sudo chdir /etc vim rc.local
и cd
внешняя команда от execline:
sudo /command/cd /etc vim rc.local