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 fork
에 expect daemon
그리고 또 다른 소용돌이를 제공합니다.
bash
래퍼를 편집하면 좋은 것보다 더 해칠 수 있습니다. 이것은 더 나은 exec 일 수 있습니다 :
exec sudo -u ircuser /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf