Ответы:
использование launchd
и указать следующие в конфигурации вашего LaunchDaemon / LaunchAgent:
<key>KeepAlive</key>
<true/>
Этот необязательный ключ используется для контроля того, должна ли ваша работа постоянно выполняться или чтобы спрос и условия управляли вызовом. По умолчанию установлено значение false, и поэтому только требование будет запускать задание. Значение может быть установлено в true, чтобы безоговорочно поддерживать работу. [...]
Чтобы перезапустить, я думаю, вы можете просто kill
это и он вернется автоматически.
<true/>
,