Судо не может дать команду 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 

Другие вопросы по тегам