У меня есть рабочая программа, которую я запускаю в rc.local. Программа не самая стабильная в мире, поэтому я хотел бы настроить наблюдателя какого-то типа, который проверяет, продолжает ли вышеуказанная программа, а если нет, снова запустите программу.
Я могу представить пару способов сделать это, хотя я уверен, что есть еще:
имеет задание cron, которое запускается и ищет запущенную программу. Если он остановлен, в противном случае он запускает другой экземпляр программы, запустите специальную программу мониторинга, которая будет проводить все время и опросы часто, чтобы узнать, работает ли программа.У кого-нибудь из вас есть примеры любой из этих реализаций или рекомендаций о том, как я должен это делать?
Возможно, вы можете использовать вспомогательный скрипт, который запускает процесс в бесконечном цикле, например:
#!/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.
Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install 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.
Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install 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.
Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install 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.
Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускаю их, если они не работают.
Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.
Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!d4]
#! / bin / bash # Бесконечный цикл while true; do # Получить начальное время start_epoch = $ (date +% s) # Запустить программу my-program # Прервать, если приложение слишком быстро завершило длительность = $ (($ (date +% s) - $ start_epoch)), если [["$ длительность "& lt; 30]]; затем echo «Программа вышла слишком быстро. Прерывание возобновления». exit fi done exit
Вызовите этот скрипт вместо my-program
в /etc/rc.local
.
Для более сложного примера см. этот скрипт , который я использую для автоматического перезапуска апплета NetworkManager.
Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.
Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!d4]
#! / bin / bash # Бесконечный цикл while true; do # Получить начальное время start_epoch = $ (date +% s) # Запустить программу my-program # Прервать, если приложение слишком быстро завершило длительность = $ (($ (date +% s) - $ start_epoch)), если [["$ длительность "& lt; 30]]; затем echo «Программа вышла слишком быстро. Прерывание возобновления». exit fi done exit
Вызовите этот скрипт вместо my-program
в /etc/rc.local
.
Для более сложного примера см. этот скрипт , который я использую для автоматического перезапуска апплета NetworkManager.
Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.
Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!d4]
#! / bin / bash # Бесконечный цикл while true; do # Получить начальное время start_epoch = $ (date +% s) # Запустить программу my-program # Прервать, если приложение слишком быстро завершило длительность = $ (($ (date +% s) - $ start_epoch)), если [["$ длительность "& lt; 30]]; затем echo «Программа вышла слишком быстро. Прерывание возобновления». exit fi done exit
Вызовите этот скрипт вместо my-program
в /etc/rc.local
.
Для более сложного примера см. этот скрипт , который я использую для автоматического перезапуска апплета NetworkManager.
Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!d4]
#! / bin / bash # Бесконечный цикл while true; do # Получить начальное время start_epoch = $ (date +% s) # Запустить программу my-program # Прервать, если приложение слишком быстро завершило длительность = $ (($ (date +% s) - $ start_epoch)), если [["$ длительность "& lt; 30]]; затем echo «Программа вышла слишком быстро. Прерывание возобновления». exit fi done exit
Вызовите этот скрипт вместо my-program
в /etc/rc.local
.
Для более сложного примера см. этот скрипт , который я использую для автоматического перезапуска апплета NetworkManager.
Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.