En OSX uso launchd a esto. launchd va a iniciar un comando de inicio de sesión o de inicio y si el proceso se muere se va a reiniciar.
El proceso es controlado por una .plist archivo con formato definido en Manzana docs el ejemplo en la página de manual para el caso de que usted pida.
<?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>com.example.exampled</string>
<key>ProgramArguments</key>
<array>
<string>exampled</string>
</array>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Si desea iniciar cuando un usuario inicia sesión en el este archivo va en ~/Library/LaunchAgents. Si cuando se inicia el equipo, a continuación, /Library/LaunchDaemons (que no puede tener acceso a la interfaz gráfica de usuario), pero este se ejecuta como root a menos que se agregue un nombre de Usuario clave. (Gracias a @Gordon Davisson para la corrección y la relectura de Apple definiciones)
Para facilidad de ajuste de la .plist, puede utilizar Lingon.aplicación disponible en la Mac AppStore