Add your own boot command script to Mac OS X

| 1 Comment | 2 TrackBacks
If you have some things you want to start when your mac boots, here is how to do it. I use mine to start up an SSH keychain, start a mysql server and a memcached. First, you'll need to be root: sudo tcsh Now, make a directory for your stuff. Suppose your name is "Buffy." mkdir /Library/StartupItems/buffy chown root /Library/StartupItems/buffy chmod 755 /Library/StartupItems/buffy You need to put two files in this directory. The first one is called StartupParameters.plist and should look like this: { Description = "buffy"; Provides = ("buffy"); Requires = ("Network"); OrderPreference = "Late"; Messages = { start = "Starting buffy"; stop = "Stopping buffy"; }; } If you were some kind of Darwin super guru, you could set all kinds of other options in here, but let's pretend for now that you just want to save yourself remembering to type extra stuff after you reboot your mac. Crap that sentence was ugly. Sorry. OK, now you need to write the actual script to start things. name that file buffy Here is an example:
#!/bin/sh

##
# buffy local stuff
##

. /etc/rc.common

StartService ()
{
    ConsoleMessage "buffy startup"
    # start postfix mail server
    postfix start
    # this is some weird stuff that only i'm interested in
    # but I'm sure  you have similar weird stuff
    /r9/mysql1/bin/r9mysqld start
    export EVENT_NOKQUEUE=1
    # note the 'su' things so these process run as the 'buffy' user
    su buffy -c '/usr/local/bin/memcached -d -m 128 -p 11211'
    su buffy -c 'sh /Users/billo/bin/keychain'
}

StopService ()
{
    ConsoleMessage "buffy shutdown"
    /r9/mysql1/bin/r9mysqld stop
}

RestartService ()
{
    StopService
    StartService
}

RunService "$1"
Make sure the files you create are owned by 'root' otherwise OS X will ignore them.

2 TrackBacks

from Launching Cruise Control during Startup on OSX :: Practical Flash on June 23, 2008 12:25 AM
from Launching Cruise Control during Startup on OSX | Krotscheck.net on September 15, 2010 1:52 PM