Есть приложение-заглушка, написанное на языке C. Теперь я хочу запускать это приложение периодически, скажем, в 11.30 утра ежедневно. Я думал об использованиихронпроцесс, но я не знаю как это сделать. Пожалуйста, помогите.
Также я хочухронпериодически проверять, нормально ли работает приложение. Если приложение вылетает или зависает,хрондолжна быть возможность перезапустить приложение в течение определенного периода времени.
решение1
Cron предназначен для запуска запланированных задач через заданные интервалы времени, а не для присмотра за другими процессами.
Вы можете:
используйте что-то другое, например, систему скриптов инициализации вашей хостовой ОС, возможно, с пользовательским заданием,
inittab
которое будет само себя возрождать в случае сбоя.или состряпать что-нибудь в виде скрипта оболочки, который периодически запускается и
cron
проверяет ваш скрипт-демон с помощью некоторого набора предопределенных проверок на предмет того, правильно ли он работает или нет, и если нет, то выполняет очистку, а затем перезапускается.
решение2
Вы можете просто сделать запись в вашем файле crontab
$ crontab -e
конец, затем ваша запись согласноhttp://www.manpagez.com/man/5/crontab/
[email protected]
30 11 * * * /path/to/your/command
При MAILTO
вводе вы получите электронное письмо, если команда выводит данные на STDERR.
Проверка зависания процесса более сложная: следует определить, что вы подразумеваете под зависанием: выполняется дольше определенного времени? Вызывает какое-то узнаваемое поведение?
Вы всегда можете запустить второй процесс или скрипт позднее, чтобы проверить, выполняется ли процесс, и предпринять соответствующие действия.
решение3
Кронитор (https://cronitor.io) был инструментом, который я создал именно для этой цели. По сути, он сводится к тому, чтобы быть маяком отслеживания, который использует http-запросы для записи начала и конца задания cron/запланированной задачи.
Одним из преимуществ использования Cronitor является то, что у вас есть гибкость в написании сценариев для запросов отслеживания, и вы даже можете делать вызовы, которые немедленно сообщат об ошибках. С этой гибкостью вы, возможно, сможете написать оболочку для своего приложения, которая будет сообщать об ошибкахипопытаться перезапустить скрипт в случае возникновения сбоев.