데비안에서 데몬을 만드는“표준”방법이 있습니까?


17

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

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


2
이것은 debian jessie에서 변경되었으며, 기본값은 sysvinit에서 systemd로 변경되었습니다.
Jules

debian jessie는 적어도 / usr / bin / service를 사용하여 이전 버전과 호환되는 것으로 보입니다. upstart 구성 (/etc/init/{service}.conf)이없고 sysvinit 구성 (/ etc / init)이있는 경우. d / {service})를 입력하면 / usr / bin / service는 sysvinit에서 이전과 같이 /etc/init.d/{service}와 상호 작용합니다.
Kevin

답변:


18

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

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

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

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


감사. 내가 가지고 있지 않은 것 같습니다 /usr/bin/service내 시스템 (그것의 데비안 레니)에,하지만 난 직접 스크립트를 시작할 수 있습니다 /etc/init.d/myservice start.
Kuroki Kaze

3
당신은 사용할 수 있습니다 sudo invoke-rc.d yourservice start뿐만 아니라
chmeee을

몰랐어요 Thx
chiggsy

3

데비안 (및 우분투)에는 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

3
위에서 제안한 /etc/init.d/skeleton을 선호합니다. 왜냐하면 의존성 부팅으로의 마이그레이션에 도움이되는 INIT INFO 부분도 포함하고 있기 때문입니다.
dpavlin

2

데비안에서 프로세스를 제대로 데몬하려면 제어 프로세스에서 분기, 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와 같은 도구를 사용하여 자동으로 중지되고 시작되는 런레벨을 조정할 수 있습니다. 이것은 모든 런레벨에서 서비스가 시작되지 않습니까?에 자세히 설명되어 있습니다 .

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