У меня есть рабочая программа, которую я запускаю в rc.local. Эта программа не самая стабильная в мире, поэтому я хотел бы установить некий наблюдатель, который проверял бы, работает ли вышеупомянутая программа, и если нет, запускал бы ее снова.
Я могу представить себе несколько способов сделать это, хотя уверен, что есть и другие:
Есть ли у кого-нибудь из вас примеры любой из этих реализаций или рекомендации о том, как мне это сделать?
Я предложил бы Monit. Можно установить его из Синаптической или sudo Кв. - получают установку monit. Я использую его на своем сервере, чтобы контролировать мой SSH, Apache, и т.д. и перезапустить их, если они перестали работать.
Вы смогли, используют сценарий помощника, который выполняет процесс в бесконечном цикле, например:
#!/bin/bash
# Infinite loop
while true; do
# Get starting time
start_epoch=$(date +%s)
# Run program
my-program
# Abort if the application exited too quickly
duration=$(( $(date +%s) - $start_epoch ))
if [[ "$duration" < 30 ]]; then
echo "Program exited too quickly. Aborting relauncher."
exit
fi
done
exit
Назовите этот сценарий вместо my-program
в /etc/rc.local
.
Для более сложного примера см. этот сценарий, который я использую для автоматического перезапуска Апплета NetworkManager.