Lo que estás buscando es launchd
.
Le permitirá ejecutar una aplicación de forma continua (inicio automático en el inicio, reinicio cuando se cierra / falla)
Para usarlo, agregue un archivo plist
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>
Luego cárgalo una vez con launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
- La opción
RunAtLoad
lanzará la aplicación la primera vez que launchctl ejecute esto.
- La opción
KeepAlive
reiniciará la aplicación si se bloquea.
- El
StartCalendarInterval
lo ejecutará en un momento determinado. Presumiblemente, esto se excluye mutuamente con los dos anteriores, pero se incluye para mostrar lo que se puede hacer con launchd
Launchctl ejecutará esto después de reiniciar.