当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux下的mongodb服务监视脚本(启动服务)

    栏目:Linux/apache问题 时间:2019-03-08 13:49

    这篇文章主要介绍了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/null 2>&1 &

    这样敲命令也着实苦逼,所以从网上找了一个mongodb服务脚本就舒服多了:

    #!/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 添加执行权限。
    现在,就可以使用 service 命令来控制mongodb了:

    复制代码 代码如下:
    service mongodb start|stop|restart
    #或
    /etc/init.d/mongodb start|stop|restart

    非常简单,贴到博客记录一下,以备不时之需。