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再起動されます。今後それほど価値のあるサービスを受けました。スタート

スクリプトを最後に実行するには、すべてのエントリを終了し、システムを停止する前に最も高い値を確認してください(最小なので、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

テストを経て動作中

関連情報