RHEL6에서 종료 및 다시 시작 시 스크립트를 실행할 수 없습니다.

RHEL6에서 종료 및 다시 시작 시 스크립트를 실행할 수 없습니다.

종료하고 재부팅할 때마다 스크립트를 실행하려고 하는데 스크립트가 실행되지 않습니다.

  1. baseRhel64 스크립트를 생성하여 다음 위치에 저장했습니다./etc/rc.d/init.d
  2. 내가 해냈어chkconfig --add baseRhel64
  3. 스크립트에 포함시켰어요

    #chkconfig --list
    # chkconfig: 06 10 10
    
  4. S10 스크립트가 /etc/rc0.d/S10baseRhel64다음에서 생성 되었음을 확인했습니다./etc/rc6.d/S10baseRhel64

아래는 내 스크립트입니다.

#!/bin/sh

#chkconfig --list
# chkconfig: 06 10 10

start(){
    echo "`basename $0` start"
    touch /root/installscripts/test1
}

stop(){
    echo "`basename $0` stop"
    touch /root/installscripts/test2
    touch /root/installscripts/"`basename $0`"
}

case "$1" in
    start) start;;
    stop) stop;;
    *) 
    echo $"Usage: $0 {start|stop}"
    RETCAL=1
esac
exit 0

답변1

RH EL 6에서 사용자 정의 초기화 스크립트(예: "service_name")를 구성할 때 시작 단계에서 잠금 파일 /var/lock/subsys/service_name을 생성해야 합니다. 그렇지 않으면 스크립트가 구현되지 않습니다. 시스템을 종료합니다(init 0 또는 init 6). 또한 잠긴 파일의 중지 단계에서 "rm -f"를 설정해야 합니다.

바라보다https://access.redhat.com/solutions/701383

답변2

/etc/rc0.d합계 금액을 확인하면 /etc/rc6.d서비스를 받기 전에 시스템이 먼저 killall(우선순위 00) 실행된 다음 halt(우선순위 01) 실행되는 것을 볼 수 있습니다.

서비스가 다음에 실행되도록 예약되었지만 컴퓨터가 작동을 멈췄습니다.

lrwxrwxrwx 1 root root 17 Sep 28  2012 S00killall -> ../init.d/killall
lrwxrwxrwx 1 root root 14 Sep 28  2012 S01halt -> ../init.d/halt
lrwxrwxrwx 1 root root 14 Jul  8 21:16 S10test -> ../init.d/test

내가 당신이라면 일반적으로 사용하는 런레벨에서 스크립트를 활성화한 다음 345시작을 중지로 바꾸는 것입니다. 현재 런레벨에서 실행 중인 모든 chkconfig:ed 데몬은 중지 시 호출되고 arg로 stop다시 시작되기 .앞으로그만한 가치가 있는 서비스를 받았어요시작.

스크립트를 마지막으로 실행하려면 모든 항목을 종료하고 시스템을 중지하기 전에 가장 높은 값을 확인하세요(mine K92iptables이므로 중지 우선 순위 > 92).

먼저 다음 줄을 읽 chkconfig --del baseRhel64도록 스크립트를 변경하십시오.chkconfig# chkconfig: 345 10 93

그러면 스크립트는 다음과 같이 시작 및 중지 함수 이름을 바꿉니다.

#!/bin/sh

#chkconfig --list
# chkconfig: 345 10 93

stop(){
    echo "`basename $0` stop"
    touch /root/installscripts/test1
}

start(){
    echo "`basename $0` start"
    touch /root/installscripts/test2
    touch /root/installscripts/"`basename $0`"
}

case "$1" in
    start) start;;
    stop) stop;;
    *);;
    echo $"Usage: $0 {start|stop}"
    RETCAL=1
esac
exit 0

답변3

나는 당신을 위한 좋은 해결책을 가지고 있습니다. a) 다음과 같은 스크립트

#!/bin/sh
#
# localshutdown
#
# chkconfig:   06 01 25
# description: localshutdown script
#              

### BEGIN INIT INFO
# Provides: 
# Required-Start: 
# Required-Stop: 
# Should-Start: 
# Should-Stop: 
# Default-Start: 0 6 
# Default-Stop:
# Short-Description: 
# Description:      
### END INIT INFO

# Source function library.

start() {
    echo "Your commands here"
    touch /root/funziona #use it for a test
}

stop() {
    echo "nothing" >/dev/null 2>&1
}

restart() {
    stop
    start
}

case "$1" in
    start)
        start
        $1
        ;;
    stop)
        stop
        $1
        ;;
    restart)
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 2
esac
exit $?

그 다음에

chkconfig --add /etc/init.d/yourscript.sh

그 다음에

chkconfig --level 06 yourscript.sh on
chkconfig --level 12345 yourscript.sh off

테스트를 거쳐 작동 중

관련 정보