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
# 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 $"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 12000
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 了:

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白安全

小白博客 Linux下暴力破解工具Hydra详解

Number one of the biggest security holes are passwords, as every password secu...

7557
来自专栏PHP在线

JSON Web Token - 在Web应用间安全地传递信息

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。

2187
来自专栏Web 开发

申请SSL开启SPDY服务

12月10日的时候,整个站点就已经装上了Nginx 1.4,配置文件里面已经可以开启SPDY功能,不过那时候一直缺少一枚SSL证书。

900
来自专栏安恒网络空间安全讲武堂

WriteUp分享 | LCTF的一道padding oracle攻击+sprintf格式化字符串导致的SQL注入

0x00题目 http://111.231.111.54/ 泄露了两个源码 .login.php.swp .admin.php.swp 源码丢在最下面,可用vi...

2428
来自专栏FreeBuf

一个纯JS脚本的文档敲诈者剖析(附解密工具)

0x00 概述 近日,腾讯反病毒实验室拦截到一个名为RAA的敲诈者木马,其所有的功能均在JS脚本里完成。这有别于过往敲诈者仅把JS脚本当作一个下载器,去下载和执...

5267
来自专栏七夜安全博客

你不知道的 HTTPS中间人攻击

研究生毕业了,好好给自己放了个假期,休息了两周,文章博客都没有更新。从大学开始基本上没过暑假,匆匆忙忙的。再过两天,就要去腾讯工作了,做了自己喜欢的网络安全,重...

1113
来自专栏LhWorld哥陪你聊算法

【Azkaban搭建】---Azkaban 3.25.0搭建细则 超实用

Azkaban是一个工作流调度工具,因为需要各个任务之间有依赖关系,传统的Crontab 任务已经不能满足。

1655
来自专栏叔叔的博客

SpringCloud config配置文件加密

? 一、前言 配置文件中,有些敏感数据需要加密处理。 SpringCloud config server可以结合jce实现这个功能。 二、配置 下载jce ...

4026
来自专栏PHP在线

JSON Web Token - 在Web应用间安全地传递信息

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 让我们来假想一下一个场景。在A用户...

3786
来自专栏运维技术迷

Nginx配置SSL证书

前段时间根据老谢写的博文,自己也搞了一个SSL证书,由于虚拟主机权限不够我折腾的,所以就入手了一台新加坡的VPS开始折腾。由于SSL证书是要求独立IP的,所以我...

1K10

扫码关注云+社区

领取腾讯云代金券