Скрипт мониторинга работы процесса и перезапуск при отсутствии

03 Nov 2024 | Автор: dd |

Возникла тут ситуация, что на одном серваке по непонятным причинам стали падать прокси. Точнее причина всегда практически одна – не хватка оперативы для обслуживания всех процессов, но виртуалка мисипусечная с диском в три гига, т.ч поднимать swap файл на 2 гига никак не получится.

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

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

Путем некоторых манипуляций получился следующий скрипт:
###### /root/3proxy-restart.sh ######
#! /bin/bash
logfile="/var/log/3proxy-restatr.log"
case "$(pidof 3proxy | wc -w)" in
0)  echo "3proxy not running, restarting proxy service:     $(date)" >> $logfile    /usr/local/bin/3proxy /usr/local/etc/3proxy/3proxy.cfg &
    ;;
1)  echo "3proxy running, all OK:     $(date)" >> $logfile
    ;;
*)  echo "multiple instances of 3proxy running. Stopping & restarting 3proxy:     $(date)" >> $logfile
    kill $(pidof 3proxy | awk '{ $1=""; print $0}')
    ;;
esac
###############

Итак скрипт через пидоф (в хорошем смысле этого слова) смотрит количество запущенных процессов, после чего увидев 0 процессов стартует сервис с соответствующей записью в лог, при 1 просто пишет, что все нормально, если число процессов больше 1, то просто грохает лишние

Для того чтобы скрипт отрабатывал на постоянке, прописываем его в расписание
# crontab -e
*/5  *  *  *  * root /root/3proxy-restart.sh

даем права на исполнение
# chmod 755 /root/3proxy-restart.sh

и рестартим сервис крона
# service crond restart

После чего можем проверить работу скрипта грохая процесс или добавляя новые.
В принципе можно и без дополнительного скрипта обойтись, с разными сценариями, а просто закинуть в кронтаб что то вроде такого:
pidof 3proxy >/dev/null ; [[ $? -ne 0 ]] && echo "Restarting 3proxy:     $(date)" >> /var/log/3proxy-restart.log && /usr/local/bin/3proxy /usr/local/etc/3proxy/3proxy.cfg

VN:F [1.9.21_1169]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)

Ваш отзыв