【问题标题】:Mongodb is not starting in ubuntuMongodb 没有在 ubuntu 中启动
【发布时间】:2013-05-16 05:11:40
【问题描述】:

我在安装 mongodb 后遇到了一个奇怪的问题,它以一条消息结束

invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--configure):

这里出了什么问题我按照这里给出的步骤操作:http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages

【问题讨论】:

标签: mongodb


【解决方案1】:

问题是您正在尝试安装为 Upstart init 服务打包的版本,但 Debian Squeeze 仍默认使用 SysV init。

安装文档中对此有注释: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-linux/#installing-mongodb

如果您使用的是使用 SysV 风格的 init 进程的 Debian 或 Ubuntu,请使用以下行:

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

【讨论】:

    【解决方案2】:

    这意味着你需要在/etc/init.d/中创建mongodb启动脚本

    试试这个script

    #!/bin/bash
    #
    # mongodb     Startup script for the mongodb server
    #
    # chkconfig: - 64 36
    # description: MongoDB Database Server
    #
    # processname: mongodb
    #
    
    # Source function library
    . /lib/lsb/init-functions 
    
    if [ -f /etc/sysconfig/mongodb ]; then
        . /etc/sysconfig/mongodb
    fi
    
    prog="mongod"
    mongod="/usr/local/mongodb/bin/mongod"
    RETVAL=0
    
    start() {
        echo -n $"Starting $prog: "
        daemon $mongod "--fork --logpath /var/log/mongodb.log --logappend 2>&1 >>/var/log/mongodb.log"
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
    }
    
    reload() {
        echo -n $"Reloading $prog: "
        killproc $prog -HUP
        RETVAL=$?
        echo
        return $RETVAL
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        condrestart)
            if [ -f /var/lock/subsys/$prog ]; then
                stop
                start
            fi
            ;;
        reload)
            reload
            ;;
        status)
            status $mongod
            RETVAL=$?
            ;;
        *)
            echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
            RETVAL=1
    esac
    
    exit $RETVAL
    

    在终端输入后:

    sudo chmod +x /etc/init.d/mongodb
    sudo /etc/init.d/mongodb start
    ps -A | grep mongod
    

    【讨论】:

    • 是的,我已经尝试过了,但我没有工作。我将该文件重命名为 mongodb 存储在 /etc/init.d 中,然后使其可执行,但它不起作用。
    • 您需要在终端中执行一些操作并给我输出信息
    • 在 /etc/init.d 我得到了一行 $lrwxrwxrwx 1 root root 21 May 24 12:08 mongodb ->/lib/init/upstart-job /etc/init.d/mongodb start \\ /etc/init.d/mongodb: line 10: /etc/rc.d/init.d/functions: No such file or directory 这个错误
    • 将第 10 行替换为 /lib/lsb/init-functions
    • daemon ... 不是必需的,--fork 为您执行此操作(至少截至 2014 年 6 月)。否则,感谢模板脚本!
    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多