it-swarm-ko.tech

부팅시 /etc/init.d에서 스크립트를 시작하려면 어떻게해야합니까?

나는 이것에 대해 잠시 동안 무언가를 읽은 것 같지만 그것이 어떻게 이루어 졌는지 기억할 수 없습니다. 기본적으로 /etc/init.d 부팅 할 때 자동으로 시작하고 싶습니다. 스크립트를 /etc/rc.d 디렉토리이지만 현재는 기억이 나지 않습니다. 이것에 대한 명령은 무엇입니까?

Fedora/CentOS 파생 상품을 사용하고 있다고 생각합니다.

87
Naftuli Kay

언급 한 바와 같이 Red Hat 기반 시스템에있는 경우 다음을 수행 할 수 있습니다.

  1. 스크립트를 작성하고 /etc/init.d (예 : /etc/init.d/myscript). 스크립트는 다음 형식이어야합니다.
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    # code to start app comes here 
    # example: daemon program_name &
}

stop() {
    # code to stop app comes here 
    # example: killproc program_name
}

case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0 

형식은 매우 표준이며 기존 스크립트를 /etc/init.d. 그런 다음 스크립트를 /etc/init.d/myscript start 또는 chkconfig myscript start. ckconfig 매뉴얼 페이지는 스크립트의 헤더를 설명합니다 :

 > This says that the script should be started in levels 2,  3,  4, and
 > 5, that its start priority should be 20, and that its stop priority
 > should be 80.

시작, 중지 및 상태 코드 예는 /etc/init.d/functions

  1. 스크립트 활성화

    $ chkconfig --add myscript 
    $ chkconfig --level 2345 myscript on 
    
  2. 스크립트가 실제로 활성화되어 있는지 확인하십시오. 선택한 레벨에 "on"이 표시되어야합니다.

    $ chkconfig --list | grep myscript
    
115
canen

머신이 일반적으로 시작하는 런레벨을 테스트합니다.

runlevel

종종 이것은 5 또는 2입니다-다양한 규칙이 있지만 실제로 확립 된 것은 없습니다. 우분투는 2를 사용하지만 이전에 사용한 배포판은 항상 사용했습니다.

  • 단일 사용자 1 명 (슈퍼 사용자)
  • 2 명의 다중 사용자
  • 3 명의 다중 사용자 + 네트워크
  • 4 미사용/사용자 정의 가능
  • 5 명의 다중 사용자, 네트워크 + X11

그런 다음 init 스크립트에서 심볼릭 링크를 만듭니다. 아마도 /etc/init.d/foobar에서 /etc/rc2.d/SXYfoobar

S는 '이 런레벨에서이 스크립트를 시작합니다 (여기서는 2)를 의미합니다. XY는 두 자리 십진수이며 시퀀스와 관련이 있으며 스크립트가 시작됩니다.

스크립트 S45barfoo를 실행하기 전에 실행하고 S55foofoo가 스크립트에 따라 달라지는 경우 45에서 55 사이의 xy를 선택합니다. 같은 수의 부팅 순서는 정의되지 않습니다.

한편 우분투는 upstart라는 다른 시작 절차로 전환했습니다.

그리고 참고 : 링크가 항상 /etc/rcX.d-때로는 /etc/init/rcX.d 또는 이와 유사한 항목이지만/etc 아래의 어딘가에서 쉽게 찾을 수 있어야합니다.

시작 스크립트의 끝에서 무언가를 시작하려면 /etc/rc.local은 찾을 파일이지만 이미 실행중인 X11에 의존하는 경우 데스크톱 환경의 자동 시작 옵션 또는 /etc/X11/Xsession.d/는 위에서 설명한 것과 유사한 패턴으로 표시됩니다.

네트워크가 작동중인 경우 별도의 디렉토리 (if-up.d)가 있으며 외부 USB 드라이브와 같은 마운트 된 장치가 있습니다 /etc/udev/rules.d/.

10
user unknown

Naftuli Tzvi Kay가 위의 데비안에 관해 물었을 때 : 데비안 6부터는 스크립트에 의존성과 기능을 나타내는 LSB (Linux Standards Base) 헤더가 포함되어 있어야합니다 ( debian wiki page ).

LSB 헤더가 있으면 insserv를 사용하여 부팅 프로세스에 스크립트를 포함시킬 수 있습니다 ( 다른 데비안 위키 페이지 참조 ).

3
mdt