Есть ли способ периодически проверять, запущен ли процесс (возможно, со сценарием Apple или каким-либо другим сценарием оболочки), а если нет, то выполнять его в терминале?
У меня есть скрипт PHP, который нужно запустить, но через некоторое время он ломается, поэтому мне нужно запустить его снова.
Благодарю.
Ответы:
В OSX используйте launchd для этого. launchd запустит команду при входе в систему или загрузке и, если процесс умирает, он перезапустит ее.
Процесс контролируется файлом .plist отформатированный как определено в Apple документах пример на этой странице справочника относится к делу, о котором вы просите.
Если вы хотите начать, когда пользователь входит в систему, этот файл находится в ~ / Library / LaunchAgents. Если при загрузке машины / Library / LaunchDaemons (которая не может иметь доступ к графическому интерфейсу), но он будет работать от имени пользователя root, если вы не добавите ключ UserName. (Спасибо @Gordon Davisson за исправление и перечитывание Apple определения )
Для простоты настройки .plist вы можете использовать Lingon.app доступно в Mac AppStore
источник
Если бы вы хотели сделать это с помощью сценария оболочки, я бы сделал что-то вроде этого:
Вы можете позвонить через хрон каждую минуту или около того.
источник
Почему нужно активно опрашивать сценарий? Почему бы просто не поместить его в цикл сценария оболочки и перезапустить, если он потерпит неудачу.
В случае, если он не завершится неудачно, опрос запущенного процесса также не спасет вас. С таким же успехом он может продолжать работать, не выполняя свою работу.
источник