start-stop-daemon으로 ulimits를 작동 시키십시오


20

init.d사용하여 앱을 시작 하는 스크립트가 있습니다 start-stop-daemon --chuid SOME_SYSTEM_USER. 즉, 앱은 루트가 아닌 다른 사용자로 실행됩니다.

문제는 앱에 특수 제한 설정 (즉 ulimit -n 64000)이 필요 하다는 것입니다 limits.conf. 이것은 쉘에서 직접 실행할 때 아주 잘 작동합니다 : su - SOME_SYSTEM_USER+ 쉘에서 앱 시작.

그러나 start-stop-daemon --chuidfrom을 실행할 때 /etc/init.d이러한 제한은 무시됩니다. 그런 다음 앱이 작동하지 않습니다.

설정을 강제로 적용 start-stop-daemon하려면 어떻게합니까 ulimit?


데비안 스퀴즈, 2.6.32-5-686 # 1 SMP 5 월 5 일 토요일 01:33:08 UTC 2012 i686 GNU / Linux

답변:


23

현재로서는 할 수 없습니다. limits.conf(5)의 구성이며의 구성에 pam_limits(8)따라 PAM 스택에 의해 활성화됩니다 /etc/pam.d. 그러나 start-stop-daemon(8)init.d 스크립트에서 시작된대로 PAM 스택을 통과하지 않으므로 이러한 종류의 설정은 적용되지 않습니다.

데비안 버그 # 302079 에는의 제한 설정을 활성화하는 패치가 포함되어 start-stop-daemon(8)있지만 버그는 2005 년 이후에 열려 있으며 패치는 아직 병합되지 않았습니다.

이상적이지는 않지만 현재 AFAIK에서 권장하는 방법은 ulimitinit.d 스크립트에 호출 을 추가하는 것 입니다.


명령 ulimit바로 앞에 설정을 추가하십시오 start-stop-daemon. (예 ulimit -n 64000) ... 나 같은 무지한합니다.
Ryan Schumacher '11

OP와 달리 어떤 데몬이 충돌하는지 모른다면 데비안 Wheezy가 데몬을 다시 시작한 후 좋은 결과를 얻었습니다. echo "ulimit -c unlimited"| sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey

좀 더 유용한 배경 정보는 여기에서 찾을 수 있습니다 : serverfault.com/a/642082/22394
sehe

7

upstart 스크립트에서 'limit'명령을 사용할 수도 있습니다.

/etc/init/foo.conf 파일에서 다음 줄을 추가하십시오 :

limit nofile 64000 64000

첫 번째 64000은 소프트 한계이고 두 번째는 하드 한계입니다.

자세한 내용은 여기를 참조하십시오 : http://upstart.ubuntu.com/cookbook/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.