FreeBSD проверка и контроль запущенных служб
Опубликовано чт, 10/18/2012 - 12:38 пользователем alitius
Система 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"
Интересное на сайте:
Голосов пока нет
