paintchatの起動スクリプト化

あつくてもうダメですが、
再起動時に自動的にpaintchatデーモンが起動するようなスクリプトです。
chkconfigを利用。


環境

  • OS
    • fedora7

参考

作業

※中途半端な起動スクリプトになっています。参考程度に

  • 本体を/usr/local/bin/paintchatdに作る
    • 名前をpaintchatdとする
    • vi paintchatdとかでコードを書く
    • logの出力先は /var/log/paintchat_log
    • ファイルの内容は以下
#/bin/bash

cd /var/www/paintchat
java -Duser.dir=/var/www/paintchat -cp ./PaintChat.jar paintchat_server.Server ./cnf/paintchat.cf >> /var/log/paintchat_log &
  • 起動スクリプトを/etc/rc.d/init.dに作る
    • 名前をpaintchatとする(紛らわしいのでpaintchatsvとかにすりゃよかった)
    • vi paintchatとかでコードを書く
#!/bin/bash
#
# Version: 0.1
#
# chkconfig: 345 99 01
# description: Runs the paintchat daemon
# processname: /usr/local/bin/paintchatd

# We require the /etc/delegeted.conf file, but supply it in the package, so it
# should always be there.
progname=paintchat
lockfile=/var/lock/subsys/paintchatd
prog=/usr/local/bin/paintchatd

# Source function library.
. /etc/init.d/functions

RETVAL=0

start() {        
echo -n $"Starting $progname: "     
daemon $prog        
RETVAL=$?        
echo
[ $RETVAL = 0 ] && touch $lockfile        
return $RETVAL
}

stop() {
echo -n $"Stopping $progname: "
ps aux | grep java | grep PaintChat.jar | grep -v grep | awk '{ print $2 }' | xargs kill -9
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f $lockfile
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  restart)
        stop
        start
        ;;
  condrestart)
        if [ -f $lockfile ]; then
            stop
            start
        fi
        ;;
 reload)
        action $"Reloading $progname:" killall -HUP $prog
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
        exit 1
esac

exit $RETVAL

  • chkconfigに追加する
#cd /etc/rc.d/init.d/
#chkconfig --add paintchat
#chkconfig paintchat on
#chkconfig --list paintchat
  • あとはサーバーを再起動して、プロセスが動いているか様子を見る
    • px aux | grep java とかで確認
    • ブラウザでも確認
    • 直接起動する場合や停止する場合は以下のコマンド
#/etc/rc.d/init.d/paintchat start
##/etc/rc.d/init.d/paintchat stop

問題点

  • stop命令を出したときに、画面に[失敗]と表示されてしまう
    • killprocの使い方がよく分からないせい
    • プロセス自体は死んでいるのだが、返り値が不正で失敗と表示される
  • paintchatd本体はpaintchatサービス内に組み込めそう?
    • 特に難しいことはしていないので、本体ファイルを別にしなくてもいけそうである
    • ちょっとだれててやらなかった


色々手抜き過ぎる。利用者の人ごめんな。修行してきます。