Lo que se busca es launchd
.
Le permitirá ejecutar una aplicación de forma continua (auto-inicio en el arranque, relanzamiento cuando se cierra/se bloquea)
Para utilizarlo, añada un plist
archivo en ~/Library/LaunchAgents/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
A continuación, cárguelo una vez con launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
- El
RunAtLoad
lanzará la aplicación la primera vez que launchctl la ejecute.
- El
KeepAlive
volverá a lanzar la aplicación si se bloquea.
- El
StartCalendarInterval
lo ejecutará a una hora determinada. Presumiblemente esto es mutuamente excluyente con los dos anteriores, pero se incluye para mostrar lo que se puede hacer con launchd Launchctl lo ejecutará después de los reinicios.