데비안에서 데몬을 만드는“표준”방법이 있습니까? 가지 옵션과 pid 파일로 데몬으로 프로그램을 시작하고

데비안의 응용 프로그램에서 데몬을 만들어야합니다. 데비안에서 우분투의 “시작”과 같은 표준 도구가 있습니까? 몇 가지 옵션과 pid 파일로 데몬으로 프로그램을 시작하고 pid 파일로 프로그램을 종료하려면 start-stop 명령 만 필요합니다.

나는 init.d를 보았지만 이것이 부팅 시간 시작을위한 것 같습니다. 데몬을 수동으로 시작하고 싶습니다.



답변

/etc/init.d/skeleton데비안 에서 파일을 따라 데몬을 수동으로 만들 수 있습니다 .

데몬 /usr/bin/service을 시작 $ sudo service yourdaemon start하고 중지 하는 데 사용할 수 있습니다 $ sudo service yourdaemon stop.

스크립트를 /etc/rc?.d디렉토리에 연결하지 않으면 시작시 스크립트가 시작되지 않습니다.

다른 한편으로, 데비안에서는 표준은 아니지만 흥미로운 기능을 가지고 있는 daemontools 를 볼 수 있습니다.


답변

데비안 (및 우분투)에는 start-stop-daemoninit 스크립트에서 사용되는 도우미 프로그램 이 있습니다. 데몬을 시작하고 추적하는 데에는 몇 가지 옵션이 있습니다. 당신은 단순히 그 주위에 래퍼를 작성할 수 있습니다.

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file
       ;;
esac

답변

데비안에서 프로세스를 제대로 데몬하려면 제어 프로세스에서 분기, IO 재설정, 프로세스 ID 파일 생성 등 여러 단계를 거쳐야합니다. 대신 같은 이름의 패키지에서 데몬 프로그램과 같은 것을 사용하여 대신 사용할 수 있습니다. 그것이 당신이하고 싶은 일이라면, 여기에 대한 답변은 StackOverflow에서 찾을 수 있습니다 : /programming/3095566/linux-daemonize

upstart 명령은 Debian의 invoke-rc.d 명령 또는 sysvinit-utils 패키지의 service 명령과 유사합니다. 그들은 /etc/init.d에있는 init 스크립트에서 작동 할 것으로 예상합니다. 데비안에서는 패키지를위한 것들 중 하나를 만들고 /etc/init.d/skeleton 예제에서 볼 수 있듯이 start-stop-daemon 프로그램을 사용하는 것이 표준입니다.

/etc/init.d/myservice 스크립트를 생성한다고해서 자동으로 시작해야하는 것은 아닙니다. update-rc.d와 같은 도구를 사용하여 자동으로 중지되고 시작되는 런레벨을 조정할 수 있습니다. 이것은 모든 런레벨에서 서비스가 시작되지 않습니까?에 자세히 설명되어 있습니다 .