1. 程式人生 > >Linux下的mongodb服務指令碼,以備不時之需

Linux下的mongodb服務指令碼,以備不時之需

前些天,一位開發同事找到我,說他測試環境的 mongodb 經常掛掉,要我寫一個監控或復活的指令碼。我覺得很奇怪,測試環境又沒啥負載,經常掛掉肯定有非常規原因。

跑過去看了一下日誌,發現存在 stop 記錄,我就納悶了,沒人操作他還會自己 stop。這明顯不是掛掉了,於是到 history 中看了下同事的啟動命令:

Shell
1 /usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data/--logpath=/data/mongodb.log--logappend&

原來如此!因為他沒有用 nohup 啟動,所以只要他的終端離線或者關閉,mongodb 就會自動退出了!解決辦法很簡單,如下啟動即可:

Shell
1 nohup/usr/local/mongodb/bin/mongod--dbpath=/usr/local/mongodb/data/--logpath=/data/mongodb.log--logappend>/dev/null2>&1&

這樣敲命令也著實苦逼,所以從網上找了一個 mongodb 服務指令碼就舒服多了:

Shell
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 #!/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$OPTIONSRETVAL=$?echo[$RETVAL-eq0]&&touch$lockfile}stop(){echo-n$"Stopping mongod: "killproc$mongod-QUITRETVAL=$?echo[$RETVAL-eq0]&&rm-f$lockfile}restart(){stopstart}ulimit-n12000RETVAL=0case"$1"instart)start;;stop)stop;;restart|reload|force-reload)restart;;condrestart)[-f$lockfile]&&restart||:;;status)status$mongodRETVAL=$?;;*)echo"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"RETVAL=1esacexit$RETVAL

將程式碼儲存到 /etc/init.d/mongodb,然後使用 chmod +x /etc/init.d/mongodb 新增執行許可權。

現在,就可以使用 service 命令來控制 mongodb 了:

Shell
123 service mongodb start|stop|restart#或/etc/init.d/mongodb start|stop|restart

非常簡單,貼到部落格記錄一下,以備不時之需。