Заставьте ulimits работать с start-stop-daemon
У меня есть init.d
скрипт, который запускает приложение, используя start-stop-daemon --chuid SOME_SYSTEM_USER
, То есть приложение работает под другим пользователем, а не под пользователем root.
Проблема в том, что приложение нуждается в специальных настройках лимита (а именно ulimit -n 64000
), который я установил в limits.conf
, Это работает очень хорошо, когда я запускаю его прямо из оболочки: su - SOME_SYSTEM_USER
+ запустить приложение из оболочки.
Но когда пробег через start-stop-daemon --chuid
от /etc/init.d
эти ограничения игнорируются. Тогда приложение не работает, очевидно.
Как я заставляю start-stop-daemon
в честь ulimit
настройки?
Debian Squeeze, 2.6.32-5-686 # 1 SMP Sat 5 мая 01:33:08 UTC 2012 i686 GNU/Linux
2 ответа
В это время ты не можешь. limits.conf(5)
это конфигурация для pam_limits(8)
, который активируется стеком PAM в соответствии с конфигурацией в /etc/pam.d
, Тем не мение, start-stop-daemon(8)
поскольку запущенный из сценария init.d не проходит через стек PAM, такие настройки никогда не применяются.
Ошибка #302079 в Debian содержит патч для включения ограничений start-stop-daemon(8)
, но ошибка была открыта с 2005 года, и патч еще не был объединен.
Хотя это и не идеально, AFAIK рекомендуемый способ сделать это прямо сейчас, это добавить ulimit
вызовите ваш скрипт init.d.
Вы также можете использовать команду limit в сценарии upstart.
В файле /etc/init/foo.conf добавьте строку:
limit nofile 64000 64000
Первый 64000 - это мягкий предел, а второй - жесткий предел.
Вы можете найти больше информации здесь: http://upstart.ubuntu.com/cookbook/