FreeBSD проверка и контроль запущенных служб

Система rc во FreeBSD делает очень простым проверку и контроль  сервисов (служб). При помощи команды service Вы можете легко получить список включенных служб. 

 
Стандартные средства FreeBSD не позволяют производить контроль и перезапуск остановившихся служб, по крайней мере я таких не знаю, поэтому был написан скрипт.
 
Представленный ниже скрипт проверяет все запущенные сервисы. Он использует команду service с ключом -e для получения включенных служб, если rc status говорит что, служба не запущена, то происходит ее запуск.
 
Не все rc скрипты стартуют как демоны, или должны работать непрерывно. Как пример работа в фоновом режиме fsck. Для более точного управления в скрипт включен параметр - IGNORE_LIST, в который мы заносим список исключений.
 
#!/bin/sh
#
# Script to check if enabled rc scripts are running, if not start them
#
# Uses ``<rc.d script> status'' to check if service is running.
# Some rc scripts do not run a simple daemon, we also might not want
# to check them, add the rc script name to IGNORE_LIST.
#

# Ignore list, services we don't want to start, e.g. bgfsck, newsyslog.
# Note space at ends of string and in test var, this ensures exact matches.
IGNORE_LIST=" bgfsck newsyslog ntpdate "

# Get list of enabled rc scripts
/usr/sbin/service -e | while read SERVICE
do
    # is rc script in ignore list?
    test "${IGNORE_LIST#* $(basename ${SERVICE}) }" != "${IGNORE_LIST}" && continue

    # check rc script supports status
    ${SERVICE} 2>&1 | /usr/bin/grep '|status|poll' >/dev/null
    if [ $? -eq 0 ]
    then
        # check status
        STATUS=$(${SERVICE} status)
        if [ $? -gt 0 ]
        then
            # service not running try to start
            echo ${STATUS}
            ${SERVICE} start
            ${SERVICE} status
        fi
    fi
done

В случае засорения /var/log/messages сообщениями типа:

Oct 18 10:48:55 vpnoff alex1812: /usr/sbin/service: WARNING: $snmptrapd_enable is not set properly - see rc.conf(5).
Oct 18 10:48:56 vpnoff alex1812: /usr/sbin/service: WARNING: $rsyncd_enable is not set properly - see rc.conf(5).

 

Можно явно отключить эти службы в rc.conf - 
snmptrapd_enable="NO"
rsyncd_enable="NO"
Интересное на сайте: 
0
Голосов пока нет