CentOS5.5でサービスを開始/停止するスクリプト/etc/init.d/xxxを作成しました。
「servicestartxxx」または「servicestopxxx」を呼び出すと、すべて正常に機能します。しかし、マシンを再起動すると、シャットダウン時にサービスが停止しなかったことがログに表示されます。
ただし、起動時に開始されました。
> chkconfig --list xxx xxx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
私が間違っていること。ありがとうございました。
UPD:スクリプトのヘッダー:
#!/bin/bash
#
# Startup script for the xxx
#
# chkconfig: 345 99 01
# description: This script ...
#
### BEGIN INIT INFO
# Provides: xxx
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start:
### END INIT INFO
私はLinuxの第一人者ではなく、実際には初心者ですが、シャットダウンスクリプトを実行するには、スタートアップスクリプトの/ var/lock/subsys /フォルダーにロックファイルを作成する必要があります。私はここで答えを見つけました: CentOSフォーラム
スクリプトの例:
#!/bin/sh
# chkconfig: 345 98 11
# description: my auto start-stop script.
echo "my service is doing something :)" >> /root/tempfile
case "$1" in
start)
echo "my service started" >> /root/tempfile
touch /var/lock/subsys/myservice
echo "OK"
;;
stop)
echo "my service stoped" >> /root/tempfile
rm -f /var/lock/subsys/myservice
echo "OK"
;;
esac
/etc/rc6.d/ディレクトリにリンクを作成して、サーバーのシャットダウン時にそのスクリプトを呼び出す必要がある場合があります。
ls -l /etc/rc5.d/K60nfs
lrwxrwxrwx1ルートルート2010年5月13日/etc/rc5.d/K60nfs->../init.d/nfs
シャットダウンされていないと言うとき、スクリプトが呼び出されていないのか、それとも想定どおりに実行されていないのかを知っていますか?
他のログに加えて、次のようなことを行う一連のエコーステートメントをstartup/shutdownスクリプトに追加します。
echo "$(date) Entering script" >> ~root/debugging.log
...
echo "$(date) Entering section x" >> ~root/debugging.log
問題を探す場所を突き止めるのに役立つかもしれません
Bogdan Olteanuがあなたのケースの答えかもしれません、それは私のものでした。 CentOSがシャットダウンできるように、ロックファイルには起動スクリプトと同じ名前を付ける必要があります。仮定の場合、startメソッドに次の行を含める必要があります。
touch /var/lock/subsys/xxx
サービスの名前とまったく同じである必要があります(xxx)。
乾杯、CaioToOn!
スクリプトのヘッダーを投稿していただけませんか?
このようなもの:
#!/bin/sh
#
# /etc/init.d/mysystem
# Subsystem file for "MySystem" server
#
# chkconfig: 2345 95 05
# description: MySystem server daemon
#
# processname: MySystem
# config: /etc/MySystem/mySystem.conf
# config: /etc/sysconfig/mySystem
# pidfile: /var/run/MySystem.pid