Что хорошего в «мониторе процессов гетто» без установки какого-либо дополнительного программного обеспечения, кроме 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
Но почему вы не хотите использовать для этого внешнюю утилиту? Монит - отличный инструмент (демон) для этого. Также он может отслеживать многие другие процессы.