Назад | Перейти на главную страницу

Проверка, не запускался ли процесс в течение определенного периода времени

Что хорошего в «мониторе процессов гетто» без установки какого-либо дополнительного программного обеспечения, кроме cron и некоторых стандартных инструментов UNIX? Т.е. проверить в сценарии оболочки, умер ли какой-то процесс и какое-то время был мертв, чтобы перезапустить его? Это должно было бы перезапустить процесс segfaulting Varnish.

Вы можете создать простой сценарий bash, который запускается каждую минуту и ​​проверяет, выполняется ли процесс. Если нет, он может создать файл и в одном из следующих запусков в соответствии с датой создания файла может принять решение, начинать процесс лака снова или нет.

Простой пример:

#!/bin/bash
pid=$(ps -ewwo args | grep [v]arnish)
check_file=/var/run/varnish.checker

# minimum difference in seconds
min_difference=180

if [ -f "$check_file" ]
then
    difference=$(($(date +"%s") - $(stat -c %Y "$check_file")))
    if [ $difference -gt $min_difference ]
    then
        ### start the varnish process here ###
        rm -f "$check_file"
    fi
else
    if [ -z $pid ]
    then
        touch "$check_file"
    fi
fi

Но почему вы не хотите использовать для этого внешнюю утилиту? Монит - отличный инструмент (демон) для этого. Также он может отслеживать многие другие процессы.