To run a command on start up on OS X, you need to use launchd
.
If you don't want to use Lingon, you need to create a launchd
Property List. This is an XML file, so you can do it with your favourite text editor or alternatively you can use the Property List Editor that's installed with the Mac OS X Dev Tools. Create the following:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.meaningful.name</string> <!-- org.mongodb.mongodb perhaps? -->
<key>OnDemand</key>
<false/>
<key>UserName</key>
<string>anAppropriateUser</string>
<key>GroupName</key>
<string>anAppropriateGroup</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/MongoDB/bin/mongod</string>
<string>--dbpath</string>
<string>/usr/local/mongo/data</string>
<string>--fork</string>
<string>--logpath</string>
<string>/usr/local/mongo/log</string>
</array>
</dict>
</plist>
Save this in /Library/LaunchAgents/some.meaningful.name.plist
(you will need an administrator account and/or sudo
), then open a terminal and do:
sudo launchctl load /Library/LaunchAgents/some.meaningful.name.plist
This will cause launchd to load the item which will cause it to start MongoDB on boot. As a bonus, launchd
will monitor it and, if it exits for any reason, it will be re-started. To get rid of the item simply replace load in the above command with unload.
1@Mark link to "launchd" is broken :( – Artem – 2016-11-07T05:10:46.353
1So if my command is inserted in either of the files in
/etc
it should be run on bootup? Does it matter what one it is in? – Wolfy87 – 2011-01-06T11:45:42.9931
/etc/bashrc
and so on are run when you start a shell, just like~/.bashrc
- it's just that the former will be run whenever any user starts a shell, rather than just your user. – Scott – 2011-01-06T12:07:30.897@Scott is correct I have corrected my answer – user151019 – 2011-01-06T12:14:13.397
4Okay, but I just can't work out how to use launchd, I tried making a plist file for my program but I have no idea how to run it or how to get it to run on boot. – Wolfy87 – 2011-01-06T12:27:09.337