Судо не может дать команду ulimit?
Я пытаюсь написать решение для другого пользователя, когда заметил, что команда sudo ulimit -c возвращает не найдено. Итак, я попробовал это:
$ sudo ulimit -c
sudo: ulimit: command not found
$ ulimit -c
0
$ sudo -i
# ulimit -c
0
так что... он работает от root и работает без sudo, но не с sudo. Это ошибка?
2 ответа
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
,
Вам было предложено два способа решения этой проблемы - использование оболочки в качестве посредника и настройка ограничений в другом месте, кроме самой командной строки. Вот третье, для ситуаций, когда кто-то пытается использовать такие команды для внесения изменений в состояние процесса, а не для его отображения.
Если бы можно было запустить встроенные оболочки как sudo ulimit …
или же sudo cd …
на самом деле изменить состояние процесса, что не было бы особенно полезно. После этого ничего больше не будет запущено в процессе, пределы или рабочий каталог которого были изменены. Можно настроить пределы процесса или рабочий каталог только для немедленного выхода из процесса.
Но есть наборы инструментов с цепочечной загрузкой внешних команд с этими функциями. Они делают то же самое, что встроенные в оболочку, но также загружают цепочку в другую программу после того, как они это сделали.
Это различные наборы инструментов семейства daemontools - daemontools, daemontools-encore, nosh, perp, s6, freedt и runit.
Инструменты для установки лимитов и последующей загрузки по цепочке в другую программу по-разному softlimit
(DAEMON Tools), softlimit
(Freedt), softlimit
(Daemontools-бис) softlimit
(Nosh), s6-softlimit
(S6), chpst
(рунит) и runlimit
(Преступник). Таким образом, можно запустить, скажем, vim с измененным пределом размера основного файла, используя daemontools, daemontools-encore, nosh или freedt с помощью команды:
sudo softlimit -c 0 vim
у Ноша тоже есть подобное ulimit
команда, которая использует разные размеры блока для различных пределов, которые используются с softlimit
:
sudo ulimit -c 0 vim
То же самое касается смены каталога, для которого есть nosh chdir
внешняя команда загрузки цепи:
sudo chdir / etc vim rc.local
и cd
внешняя команда из execline:
sudo / command / cd / etc vim rc.local