시작 스크립트 및 시작 중지 데몬


8

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과 호환되도록 만들 수있는 방법이 있습니까?

답변:


6

완전히 확신 할 수는 없지만 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

감사합니다! 더 깔끔하게 작동 expect fork하며 문제를 해결했습니다. 그러나 여전히 'stop ircd'를 호출 할 수 없으며 스크립트가 중지됩니다. 그러나 나는 그것없이 관리 할 것입니다 (ps aux, kill).하지만 그것을 할 수있는 방법을 포함하도록 답변을 수정할 수 있다면 매우 행복한 우분투 사용자가 될 것입니다.)
Liam Dawson

흠-당신이 sudo start ircd그것을 실행할 때 PID를 출력해야합니다. ps(예 : :) 끝에 그것을 붙이면 ps u -p <PID>의미가있는 과정을 보여 줍니까? 그래도 PID 추적을 잃지 않으면 시도해 볼 수 있습니다.expect daemon
Oli

실제로 PID는 출력하지 않고 일부 콘솔 출력 만 출력합니다. 오 잘 ps aux, kill <pid>나는 더는 않는, 부팅 스크립트 시작을 염려하고, 잘 작동합니다. 감사!
Liam Dawson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.