Пример:
1) Создаем по пути /opt/checker.sh скрипт с содержимым:
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash while true do LIMIT=0.02 LAST="$(uptime | tail -c 5)" if (( $(echo "$LAST >= $LIMIT" | bc -l) )) ; then echo "ALERT at $(date)" >> /var/log/checker fi sleep 10 done |
2) Превращаем его в исполняемый файл и проверяем работу:
1 2 3 4 |
chmod u+x /opt/checker.sh /opt/checker.sh touch /var/log/checker tail /var/log/checker |
3) Пишу в файл /etc/init.d/checker скрипт для демона:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/bin/bash # chkconfig: 2345 20 80 # description: checking load # Source function library. . /etc/init.d/functions case "$1" in start) echo "$(date) service checker started" >> /var/log/checker /opt/checker.sh & echo $!>/var/run/checker.pid ;; stop) echo "$(date) service checker stopped" >> /var/log/checker kill `cat /var/run/checker.pid` rm /var/run/checker.pid ;; restart) $0 stop $0 start ;; status) if [ -e /var/run/checker.pid ]; then echo checker is running, pid=`cat /var/run/checker.pid` else echo checker is NOT running exit 1 fi ;; *) echo "Usage: $0 {start|stop|status|restart}" esac exit 0 |
4) Делаю скрипт исполняемым и добавляю в автозапуск и проверяю его работу:
1 2 3 4 |
sudo chmod u+x /etc/init.d/checker chkconfig checker on service checker start service checker status |