mongodb起動スクリプト

カテゴリー:未分類 作成日:2015年4月8日22:07

起動スクリプトをぼちぼち覚えないとrc.localは廃止になるらしい。
練習を兼ねて VineLinux6.3 mongodb の起動スクリプトを作った。
参考にしたサイト
chkconfigを利用した起動スクリプトひな形
Linux起動の仕組みを理解しよう[rcスクリプト編]
VineSeed の mongodb 起動スクリプト(丸写しに近い)

mongodb の dbpath は前回作ったのを利用する。

まず /etc/mongodb.conf を VineSeedより拝借

#mongodb.conf

bind_ip = 127.0.0.1
port  = 27017
fork = true
pidfilepath = /var/run/mongodb.pid
logpath = /var/log/mongod.log
dbpath = /data/db
journal = true

/etc/init.d/mongod これもVineSeedより拝借して理解できない所はなるべく使わないように少しだけ書きなおした。

#!/bin/sh
# chkconfig: 345 99 1
# description: mongod
# processname: mongod
# Source function library
. /etc/rc.d/init.d/functions

exec="/usr/local/bin/mongod"
prog="mongod"
pidfile="/var/run/mongodb.pid"
logfile="/var/log/mongodb.log"
options=" -f /etc/mongodb.conf"

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile="/var/lock/subsys/mongod"

start() {
    [ -x $exec ] || exit 5
    echo -n "Starting mongod: "
    LANG=C  
    daemon --pidfile=${pidfile} "$exec --quiet $options run >> $logfile 2>&1 &"
    retval=$?
    echo 
    [ $retval -eq 0 ] && touch $lockfile 
    return $retval
}

stop() {
    echo -n "Stoping $prog: "
    killproc -p ${pidfile} $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    stop
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        $1
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 2
esac

exit $?

自分用覚書

# chkconfig: 345 99 1  

これは/etc/inittabにある説明のように3,4,5の時起動する。
/etc/inittabの一部分
0は終了、1はシングルモード、3はマルチモード、5はグラフィックモード

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

以下2項目も必要なようだが、mongodの所はなんでもよいようだ。

# description: mongod
# processname: mongod

用意された functions をインクルードする。各ディストリビューションで違うので注意

# Source function library
. /etc/rc.d/init.d/functions
以下の項目は必要ではないかも知れない
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
.....
start() {
   $exec にファイルが存在しないなら終了
    [ -x $exec ] || exit 5
 基本的に[ ] で括られている場合は if *** then のようだ。
   LANG=C <-- mongodb 2.4.12を使ったので LANG=Cとしたが, 2.2.4だと要らないと思う


あとは

sudo chmod +x /etc/init.d/mongod
sudo chown -R root:root /data/db
sudo chkconfig --add mongod
sudo chkconfig mongod on 

これで今のところ起動している。

一休みしてこのサイトの起動スクリプトも、、、