контролировать или смотреть процесс и перезапускать, если он спускается [закрыт]

У меня есть рабочая программа, которую я запускаю в rc.local. Программа не самая стабильная в мире, поэтому я хотел бы настроить наблюдателя какого-то типа, который проверяет, продолжает ли вышеуказанная программа, а если нет, снова запустите программу.

Я могу представить пару способов сделать это, хотя я уверен, что есть еще:

имеет задание cron, которое запускается и ищет запущенную программу. Если он остановлен, в противном случае он запускает другой экземпляр программы, запустите специальную программу мониторинга, которая будет проводить все время и опросы часто, чтобы узнать, работает ли программа.

У кого-нибудь из вас есть примеры любой из этих реализаций или рекомендаций о том, как я должен это делать?

3
задан 20 May 2011 в 01:06

16 ответов

Возможно, вы можете использовать вспомогательный скрипт, который запускает процесс в бесконечном цикле, например:

#!/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.

1
ответ дан 25 July 2018 в 21:53

Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускаю их, если они не работают.

5
ответ дан 25 July 2018 в 21:53

Возможно, вы можете использовать вспомогательный скрипт, который запускает процесс в бесконечном цикле, например:

#!/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.

1
ответ дан 26 July 2018 в 17:30

Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускаю их, если они не работают.

5
ответ дан 26 July 2018 в 17:30

Возможно, вы можете использовать вспомогательный скрипт, который запускает процесс в бесконечном цикле, например:

#!/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.

1
ответ дан 2 August 2018 в 03:28

Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускаю их, если они не работают.

5
ответ дан 2 August 2018 в 03:28

Возможно, вы можете использовать вспомогательный скрипт, который запускает процесс в бесконечном цикле, например:

#!/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.

1
ответ дан 4 August 2018 в 19:25

Я бы предложил Монита. Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускаю их, если они не работают.

5
ответ дан 4 August 2018 в 19:25

Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.

5
ответ дан 6 August 2018 в 03:36

Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!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.

1
ответ дан 6 August 2018 в 03:36

Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.

5
ответ дан 7 August 2018 в 21:26

Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!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.

1
ответ дан 7 August 2018 в 21:26

Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.

5
ответ дан 10 August 2018 в 09:44

Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!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.

1
ответ дан 10 August 2018 в 09:44

Возможно, вы сможете использовать вспомогательный скрипт, который запускает этот процесс в бесконечном цикле, например ::!!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.

1
ответ дан 13 August 2018 в 15:56

Я предлагаю Monit . Вы можете установить его из Synaptic или sudo apt-get install monit. Я использую его на своем сервере для мониторинга моего SSH, Apache и т. Д. И перезапускает их, если они не работают.

5
ответ дан 13 August 2018 в 15:56

Другие вопросы по тегам:

Похожие вопросы: