После появления SMF в Solaris 10 работа со службами радикально изменилась. Ушли в прошлое старые сценарии SysV, но они все еще работают и не все службы в Solaris еще переконвертированы в SMF. Есть много документации по SMF, но я рассмотрю здесь одну хорошую особенность - то, что вы можете быстро обнаружить невыполняющиеся службы. Чтобы узнать состояние различных служб, можно использовать команду svcs, а параметр --x поможет нам увидеть по каким причинам и какие службы не работают:
# svcs -x
svc:/application/management/snmpdx:default (Sun Solstice Enterprise Master Agent)
State: offline since Wed May 30 19:08:36 2007
Reason: Dependency svc:/application/management/seaport is absent.
See: http://sun.com/msg/SMF-8000-E2
See: snmpdx(1M)
Impact: This service is not running.
Данный вывод показывает что служба
snmpdx не выполняется, так как не может найти
seaport. Я могу или устанавить и запустить
seaport, или, если я не планирую использовать
snmpdx, я могу отключить ее:
# svcadm disable svc:/application/management/snmpdx:default
# svcs -x
#
Теперь SMF в порядке. Мы можем использовать эту особенность, чтобы написать небольшой сценарий, который будет посылать нам e-mail (или будет использоваться для snmp-мониторинга), если служба не выполняется. Взглянем на сценарий:
#!/bin/ksh
# Public domain. Use as you wish.
EMAIL=nickus@aspiringsysadmin.com
TMPFILE=/tmp/svcs.output.$$
export PATH=/usr/bin
svcs -x >$TMPFILE
#
# check if the file size is greater than zero
# which means we got some output from svcs and
# therefore a service is bad
#
if [ -s $TMPFILE ]; then
cat $TMPFILE | mailx -s "Service failed on `hostname`" $EMAIL
fi
rm -f $TMPFILE
Все просто. Если мы получаем какой-либо вывод от
svcs, мы просто посылаем его по адресу, определяемом в переменнной EMAIL. Поставьте сценарий в
crontab с интервалом в час, и получится хороший монитор состояния вашей службы.
По материалам статьи с aspiringsysadmin.com