시작 스크립트 및 시작 중지 데몬 이를 수정하기 위해

upstart 스크립트를 작성하면 스크립트가 여러 번 호출되어 IRCd가 약 8 번 정도 생성되는 문제가 있습니다. 이를 수정하기 위해 start-stop-daemon을 사용했습니다.

description "IRC Daemon Upstart Script"

start on startup
start on runlevel [2345]
stop on runlevel [016]

respawn

nice -5

exec start-stop-daemon --start --chuid ircuser --chdir /home/ircuser/inspircd/run --exec /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf

이것은 내가 원하는대로 정확하게 작동합니다.

stop ircd

그것이 멈추지 만 inspircd는 여전히 실행되고 있습니다.

스크립트가 8 개의 인스턴스를 열지 못하게하는 start-stop-daemon을 사용하는 것보다 나은 방법이 있습니까, 아니면 start-stop-daemon과 호환되도록 만들 수있는 방법이 있습니까?



답변

완전히 확신 할 수는 없지만 Inspircd는 실행될 때 방해가되어 Upstart가 PID의 실제 위치를 알 수 없습니다. 이 경우 Upstart에는 분기 프로세스를 처리하기위한 두 개의 스탠자가 있으므로 수정 될 수 있습니다.

  • expect fork 한 번 분기되는 프로세스를 포착합니다 (imo, 대부분의 경우).
  • expect daemon이 배 밖으로 포크 어획량 것들 … 수 있습니다 일을.

따라서 이것을 시도하십시오 :

description "IRC Daemon Upstart Script"

start on startup
start on runlevel [2345]
stop on runlevel [016]

respawn
expect fork

nice -5

exec su bash -c "cd /home/ircuser/inspircd/run; /home/ircuser/inspircd/run/bin/inspircd -- --config=./conf/inspircd.conf" ircuser

즉,하지 작업을 수행한다면, 내 확인 su확인은 명령 줄에서 작동하는지 -statement을 다음 변경 expect forkexpect daemon그리고 또 다른 소용돌이를 제공합니다.


bash래퍼를 편집하면 좋은 것보다 더 해칠 수 있습니다. 이것은 더 나은 exec 일 수 있습니다 :

exec sudo -u ircuser /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf