RedhatLinuxで、自前のサービス起動・停止スクリプトを勝手に作りたい時の覚書。
まず、/etc/init.d以下に、スクリプトを作る。以下の例では、my_serviceというスクリプト名で保存したことにしよう。
#!/bin/sh
# My service
# chkconfig: 345 80 20
# ↑ 345 は起動するRunLevel 80は起動時の優先度 20は停止時の優先度
# description: for my service
start() {
}
stop() {
}
restart() {
}
case "$1" in
start)
touch /var/lock/subsys/my_service
サービス開始用の記述
;;
stop)
rm -f /var/lock/subsys/my_service
サービス停止用の記述
;;
restart)
サービス再起動用の記述
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
なお、コメント行の「chkconfig」がないと、以下のchekconfigコマンドでエラーが出るかもしれない。
以下のコマンドを実行する。
chmod 755 /etc/init.d/my_service
chkconfig my_service on
その他、chkconfigコマンドで好きなRunLevelに起動、停止スクリプト(ファイル名の頭にK20とかS80とかついたものが、rc3.dとかにできる)
起動停止スクリプトのポイントとして、/var/lock/subsys/サービス名というファイルを起動時に作って置かないと、K20my_serviceなどのファイルがあっても、シャットダウン時に実行されないので注意。起動時にこのファイルをtouchで作って、停止時にrmで消すようにしておこう。
私はこれがわかってなくて、「ファイルがあるのに、なんでシャットダウン時にKスクリプトが実行されないんだ?」と、半日くらい悩んだ。
まあ、そんな感じ。