8

other services like apache2, etc are working fine. But when I type sudo service mongod start I get this error:

mongod: unrecognized service

I have this file:

/lib/systemd/system/mongod.service 

It says this:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target
1
  • 1
    @Brandon Its related to upstart and systemd. May 16, 2017 at 7:57

3 Answers 3

4

I had the same problem after pulling the ubuntu:17:04 docker image and installing mongodb-org

It looks like Mongodb created a systemd startup file which was already replaced by upstart.

As a workaround:

  1. Create a new file /etc/init/mongod.conf (requires sudo rights). You can use: sudo gedit /etc/init/mongod.conf

  2. Paste the following contents into the newly created upstart file:

    # Ubuntu upstart file at /etc/init/mongod.conf
    
    # Recommended ulimit values for mongod or mongos
    # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
    #
    limit fsize unlimited unlimited
    limit cpu unlimited unlimited
    limit as unlimited unlimited
    limit nofile 64000 64000
    limit rss unlimited unlimited
    limit nproc 64000 64000
    
    kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
    
    pre-start script
      DAEMONUSER=${DAEMONUSER:-mongodb}
      if [ ! -d /var/lib/mongodb ]; then
        mkdir -p /var/lib/mongodb && chown mongodb:mongodb /var/lib/mongodb
      fi
      if [ ! -d /var/log/mongodb ]; then
        mkdir -p /var/log/mongodb && chown mongodb:mongodb /var/log/mongodb
      fi
      touch /var/run/mongodb.pid
      chown $DAEMONUSER /var/run/mongodb.pid
    end script
    
    start on runlevel [2345]
    stop on runlevel [06]
    
    script
      ENABLE_MONGOD="yes"
      CONF=/etc/mongod.conf
      DAEMON=/usr/bin/mongod
      DAEMONUSER=${DAEMONUSER:-mongodb}
      DAEMONGROUP=${DAEMONGROUP:-mongodb}
    
      if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi
    
      # Handle NUMA access to CPUs (SERVER-3574)
      # This verifies the existence of numactl as well as testing that the command works
      NUMACTL_ARGS="--interleave=all"
      if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
      then
        NUMACTL="$(which numactl) -- $NUMACTL_ARGS"
        DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"}
      else
        NUMACTL=""
        DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"}
      fi
    
      if [ "x$ENABLE_MONGOD" = "xyes" ]
      then
        exec start-stop-daemon --start \
            --chuid $DAEMONUSER:$DAEMONGROUP \
            --pidfile /var/run/mongodb.pid \
            --make-pidfile \
            --exec $NUMACTL $DAEMON $DAEMON_OPTS
      fi
    end script
    
  3. Now, you can use the following commands:

    sudo service mongod start

    sudo service mongod stop

    sudo service mongod status

reference: https://github.com/mongodb/mongo/blob/master/debian/mongod.upstart

1
  • 1
    thankyou so much... upstart was the issue, i didn't have upstart, so I had do sudo mongod & everytime, but thanks the upstart script you mentioned, things will be lot more easier. Jun 15, 2017 at 6:52
3

I removed mongo lock file first

sudo rm /var/lib/mongodb/mongod.lock

then started the mongod using the following command

sudo mongod --fork -f /etc/mongod.conf
2

I kept getting the same error when trying to start the mongo service. mongod worked, but then I need to keep one terminal window open to use mongo in another. nothing else worked for me except this:

'mongod --fork --logpath /var/log/mongodb.log'

Above command starts the mongo daemon if you don't already have it started and then you can just type 'mongo' in command line and mongo works

(from here: https://docs.mongodb.com/manual/tutorial/manage-mongodb-processes/)

1
  • Thanks, I know about this already, because I was using it until I found the right upstart script, I wanted to have preconfigured commands, rather than typing such long commands every time with logpath and other configurations, so an upstart script is the best solution. Jan 4, 2019 at 7:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.