мониторинг или наблюдение за процессом и перезапуск, если он падает [закрыто]

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

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

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

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

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

2 ответа

Я предложил бы Monit. Можно установить его из Синаптической или sudo Кв. - получают установку monit. Я использую его на своем сервере, чтобы контролировать мой SSH, Apache, и т.д. и перезапустить их, если они перестали работать.

5
ответ дан 1 December 2019 в 13: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.

2
ответ дан 1 December 2019 в 13:30

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

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