Monit и gentoo rc-scripts
При использовании monit для перезапуска rc-скриптов в gentoo использовал killall и опцию zap.
Нашёл это-же решение, но оформленное красивее.
Это файл /etc/monit.d/bin/kickservice
1##!/bin/sh
2## kickservice by Eric Radman
3## Script used by monit to kill off and restart daemons
4## /etc/monit.d/bin/kickservice
5
6function stop ()
7{
8 /etc/init.d/$1 pause
9 /etc/init.d/$1 zap
10 if [ "$2" == "kill" ]
11 then
12 /bin/killall $3
13 fi
14}
15
16function start ()
17{
18 /etc/init.d/$1 zap
19 /etc/init.d/$1 start
20}
21
22case "$1" in
23 start)
24 start $2 $3 $4
25 ;;
26 stop)
27 stop $2 $3 $4
28 ;;
29 *)
30 echo "Usage: kickservice [start|stop] [service] kill [daemon]"
31 ;;
32 esac
Проблема возникла из-за того, что при установке baselayout-1.12.x перестал нормально работать pppd (при подключении через pptp к VPN-серверу провайдера). Очень часто соединение не устанавливается (вина, думаю, провайдерского сервера). По идее после этого он должен перезапускаться, а он просто ничего не делал. Решил снять проблему с помощью monit.
Убрал net.ppp0 из загрузки, и заставил monit мониторить ppp0.
Вот скрипт /etc/monit.d/ppp0
1check process pppd with pidfile /var/run/ppp0.pid
2 start program = "/etc/monit.d/bin/kickservice start net.ppp0"
3 stop program = "/etc/monit.d/bin/kickservice stop net.ppp0 kill pppd"
4 if 5 restarts within 5 cycles then timeout
P. S. Хотел запостить скрипты, но не знаю как :(