RedHatLinuxで、/etc/rcx.d以下にサービス起動、停止スクリプトを勝手に作る

RedHatLinuxで、/etc/rcx.d以下にサービス起動、停止スクリプトを勝手に作る


 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スクリプトが実行されないんだ?」と、半日くらい悩んだ。
 まあ、そんな感じ。