This command:

mongod --fork --dbpath ../data --smallfiles --logpath ../data/mongo.log

runs perfectly from terminal, while in directory /mongo/bin/

But, when I use same command and directory for upstart session job file (at $HOME/.config/upstart):

# mongod_service - mongoDB job file
description "MongoDB service"
author "admin"

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
# respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork

# working directory
chdir /mongo/bin/

# log this job
console log

# Start mongod as daemon
exec /mongo/bin/mongod --fork --dbpath /mongo/data --smallfiles --logpath /mongo/data/mongo.log

Update: Changed job file and It starts fine now, but when I try to stop it with initctl stop mongod-service, the command never completes !.

Can anyone suggest how to make this work ?


Even if you are using a version of MongoDB built from Git, you can still reuse the official upstart config file:


and update it as required.

  • Yes, I'm always keeping a latest build from the git clone and configuring custom database paths etc. Also updated question. – user117 May 22 '13 at 14:24
  • Updated answer to reflect your response. – David Edwards May 22 '13 at 15:16
  • Thanks. I'll need to make some edits though. – user117 May 22 '13 at 15:36
  • Hmmm.. it uses a daemon starter, which is strange because upstart was supposed to be the alternative. – user117 May 22 '13 at 15:47

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.