前些天,一位開發(fā)同事找到我,說他測試環(huán)境的 mongodb 經(jīng)常掛掉,要我寫一個(gè)監(jiān)控或復(fù)活的腳本。我覺得很奇怪,測試環(huán)境又沒啥負(fù)載,經(jīng)常掛掉肯定有非常規(guī)原因。
跑過去看了一下日志,發(fā)現(xiàn)存在stop記錄,我就納悶了,沒人操作他還會(huì)自己stop。這明顯不是掛掉了,于是到history中看了下同事的啟動(dòng)命令:
復(fù)制代碼 代碼如下:
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend &
原來如此!因?yàn)樗麤]有用nohup啟動(dòng),所以只要他的終端離線或者關(guān)閉,mongodb就會(huì)自動(dòng)退出了!解決辦法很簡單,如下啟動(dòng)即可:
復(fù)制代碼 代碼如下:
nohup /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend >/dev/null 2>&1 &
這樣敲命令也著實(shí)苦逼,所以從網(wǎng)上找了一個(gè)mongodb服務(wù)腳本就舒服多了:
#!/bin/sh##mongod - Startup script for mongod## chkconfig: - 85 15# description: Mongodb database.# processname: mongod# Source function library . /etc/rc.d/init.d/functions# things from mongod.conf get there by mongod reading it# OPTIONSOPTIONS=" --dbpath=/home/data/mongodb/ --logpath=/home/data/mongodb/mongodb.log --logappend &"#mongodmongod="/usr/local/mongodb/bin/mongod"lockfile=/var/lock/subsys/mongodstart(){ echo -n $"Starting mongod: " daemon $mongod $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $lockfile} stop(){ echo -n $"Stopping mongod: " killproc $mongod -QUIT RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $lockfile} restart () { stop start}ulimit -n 12000RETVAL=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=1esacexit $RETVAL將代碼保存到 /etc/init.d/mongodb,然后使用 chmod +x /etc/init.d/mongodb 添加執(zhí)行權(quán)限。
現(xiàn)在,就可以使用 service 命令來控制mongodb了:
復(fù)制代碼 代碼如下:
service mongodb start|stop|restart
#或
/etc/init.d/mongodb start|stop|restart
非常簡單,貼到博客記錄一下,以備不時(shí)之需。
新聞熱點(diǎn)
疑難解答
圖片精選