Linux下的mongodb服务监视脚本(启动服务)
前些天,一位开发同事找到我,说他测试环境的mongodb经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。
跑过去看了一下日志,发现存在stop记录,我就纳闷了,没人操作他还会自己stop。这明显不是挂掉了,于是到history中看了下同事的启动命令:
/usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data/--logpath=/data/mongodb.log--logappend&
原来如此!因为他没有用nohup启动,所以只要他的终端离线或者关闭,mongodb就会自动退出了!解决办法很简单,如下启动即可:
nohup/usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data/--logpath=/data/mongodb.log--logappend>/dev/null2>&1&
这样敲命令也着实苦逼,所以从网上找了一个mongodb服务脚本就舒服多了:
#!/bin/sh
#
#mongod-Startupscriptformongod
#
#chkconfig:-8515
#description:Mongodbdatabase.
#processname:mongod
#Sourcefunctionlibrary
./etc/rc.d/init.d/functions
#thingsfrommongod.confgettherebymongodreadingit
#OPTIONS
OPTIONS="--dbpath=/home/data/mongodb/--logpath=/home/data/mongodb/mongodb.log--logappend&"
#mongod
mongod="/usr/local/mongodb/bin/mongod"
lockfile=/var/lock/subsys/mongod
start()
{
echo-n$"Startingmongod:"
daemon$mongod$OPTIONS
RETVAL=$?
echo
[$RETVAL-eq0]&&touch$lockfile
}
stop()
{
echo-n$"Stoppingmongod:"
killproc$mongod-QUIT
RETVAL=$?
echo
[$RETVAL-eq0]&&rm-f$lockfile
}
restart(){
stop
start
}
ulimit-n12000
RETVAL=0
case"$1"in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
restart
;;
condrestart)
[-f$lockfile]&&restart||:
;;
status)
status$mongod
RETVAL=$?
;;
*)
echo"Usage:$0{start|stop|status|restart|reload|force-reload|condrestart}"
RETVAL=1
esac
exit$RETVAL
将代码保存到/etc/init.d/mongodb,然后使用chmod+x/etc/init.d/mongodb添加执行权限。
现在,就可以使用service命令来控制mongodb了:
servicemongodbstart|stop|restart #或 /etc/init.d/mongodbstart|stop|restart
非常简单,贴到博客记录一下,以备不时之需。