다음은 http://www.debian-administration.org/articles/28 에서 발췌 한 것으로 귀하의 질문에 대한 답변입니다.
참고 : 아래 예제 스크립트에서 " start)
"섹션에 대한 호출을 추가 하여 실제로 프로그램을 시작하십시오. 시스템을 재부팅하지 않고도 스크립트 기능을 테스트 할 수 있습니다. 전체 경로로 호출하고 " start
"또는 " stop
" 매개 변수를 지정하십시오.
간다 :
데비안은 시스템 런레벨이 변경 될 때 (예 : 부팅 및 종료 시간) 명령을 실행하기 위해 init 시스템과 같은 Sys-V를 사용합니다.
시스템 부팅시 시작할 새 서비스를 추가하려면 디렉토리에 필요한 스크립트를 추가해야합니다 /etc/init.d/
. 해당 디렉토리에 이미 존재하는 많은 스크립트는 수행 할 수있는 작업의 예를 보여줍니다.
다음은 두 부분으로 나누어지는 매우 간단한 스크립트입니다. 항상 실행되는 코드와 "start"또는 "stop"으로 호출 될 때 실행되는 코드입니다.
#! /bin/sh
# /etc/init.d/blah
#
# Some things that run always
touch /var/lock/blah
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script blah "
echo "Could do more here"
;;
stop)
echo "Stopping script blah"
echo "Could do more here"
;;
*)
echo "Usage: /etc/init.d/blah {start|stop}"
exit 1
;;
esac
exit 0
파일을 올바른 위치에 저장 한 후 " chmod 755 /etc/init.d/blah
"를 실행하여 파일이 실행 가능한지 확인하십시오 .
그런 다음 시스템이 다운되거나 가동 될 때 스크립트가 실행되도록 적절한 기호 링크를 추가해야합니다.
가장 간단한 방법은 데비안 특정 명령을 사용하는 것입니다 update-rc.d
.
root@skx:~# update-rc.d blah defaults
Adding system startup for /etc/init.d/blah ...
/etc/rc0.d/K20blah -> ../init.d/blah
/etc/rc1.d/K20blah -> ../init.d/blah
/etc/rc6.d/K20blah -> ../init.d/blah
/etc/rc2.d/S20blah -> ../init.d/blah
/etc/rc3.d/S20blah -> ../init.d/blah
/etc/rc4.d/S20blah -> ../init.d/blah
/etc/rc5.d/S20blah -> ../init.d/blah
start-stop-daemon
프로그램이 더 잘 처리하기 때문에 단순히 "&"를 백그라운드로 사용하는 것은 좋지 않습니다 (프로그램 자체가 디먼을 선호하지만). 어떤 배포판을 사용하고 있습니까? 데스크탑 MIME 유형 이외의 파일 확장자는 * nix에서 의미가 없으며 실행 파일에 파일 확장자가없는 것이 좋습니다.