КатегорииLinksUnix Tutorial
Personal Development Ruslan Valiev Solaris Performance Team Damien Farnham Fintan Ryan Nicky Veitch Niall Mullen Sean McGrath DTrace Bryan Cantrill Brendan Gregg ZFS Tim Foster General Ben Rockwood Learning Solaris 10 Privacy policy |
Wednesday, January 26. 2005SMF: offline or disabled services
When something doesn't work like expected, one of the first commands to find what's wrong is svcs -a. But there are other ways to use this command.
For instance, the following command will show only disabled and offline services, which quite often is exactly what we want. Particularly useful is the fact that such a variant of using svcs shows you impact of each offline service - you can quickly see what other things may not be working as the result of it. svcs -xv CODE: svc:/application/print/server:default (LP print server) State: disabled since Wed Jan 26 11:23:32 2005 Reason: Disabled by an administrator. See: http://sun.com/msg/SMF-8000-05 See: man -M /usr/share/man -s 1M lpsched Impact: 2 dependent services are not running: svc:/application/print/rfc1179:default svc:/application/print/ipp-listener:default svc:/milestone/multi-user-server:default (multi-user plus exports milestone) State: offline since Wed Jan 26 11:54:58 2005 Reason: Start method is running. See: http://sun.com/msg/SMF-8000-C4 See: man -M /usr/share/man -s 1M init See: /var/svc/log/milestone-multi-user-server:default.log Impact: 1 dependent service is not running: svc:/system/zones:default As you can see, offline service svc:/application/print/server:default renders two its dependants useless as well, namely they are svc:/application/print/rfc1179:default and svc:/application/print/ipp-listener:default. Thursday, December 9. 2004SMF: Работа с сервисами Solaris 10 - продолжение
Продолжая начатую ранее тему про SMF, хочу рассказать немного о том, как работать с сервисами.
Итак, команда svcs -a поможет получить текущий список инстансов (instances) сервисов в системе, с указанием их статусов. Далее, можно воспользоваться командой svcs -l чтобы узнать о конкретном сервисе побольше. Этот вариант вызова svcs покажет всю доступную информацию об инстансе сервиса. В общем-то, вся выводимая этой командой информация полезна, но особенно полезны поля state_time - когда инстанс сервиса перешёл в текущее состояние, logfile - где можно почитать про то, как и когда именно запускался данный сервис, и ещё очень полезны зависимости этого сервиса - список тех сервисов, без которых данный инстанс не может быть запущен. Указывается состояние этих сервисов, так что удобно замечать те их зависимостей, которые в состоянии, отличном от online, чтобы смотреть уже информацию про них с помощью той же svcs -l... CODE: bash-3.00$ svcs -l svc:/network/nfs/client:default fmri svc:/network/nfs/client:default name NFS client service enabled true state online next_state none state_time Mon Dec 06 15:45:08 2004 logfile /var/svc/log/network-nfs-client:default.log restarter svc:/system/svc/restarter:default dependency require_any/error svc:/milestone/network (online) dependency require_all/error svc:/network/nfs/nlockmgr (online) dependency optional_all/error svc:/network/nfs/cbd (online) dependency optional_all/error svc:/network/nfs/mapid (online) dependency require_all/restart svc:/network/rpc/bind (online) dependency optional_all/none svc:/network/rpc/keyserv (online) dependency optional_all/none svc:/network/rpc/gss (online) dependency require_all/refresh svc:/milestone/name-services (online) В данном примере видно, что сервис NFS client запущен, потому что все его жёсткие зависимости (те сервисы, которые обязательно должны быть запущены, чтобы позволить инстансу этого сервиса так же быть запущенным). Если бы некоторые из дополнительных зависимостей (которые видны в строчках optional_all) не были запущены, NFS client всё равно бы запустился. На самом деле, после небольшой практики работы с командами, вырабатывается методика нахождения и решения проблем с запусками сервисов, и тогда начинают использоваться другие ключи команды svcs. На пример, ключик -d поможет вывести лишь список зависимостей указанного инстанса: CODE: bash-3.00$ svcs -d svc:/network/nfs/client:default STATE STIME FMRI online Dec_06 svc:/milestone/network:default online Dec_06 svc:/network/rpc/bind:default online Dec_06 svc:/network/rpc/keyserv:default online Dec_06 svc:/milestone/name-services:default online Dec_06 svc:/network/rpc/gss:default online 17:52:29 svc:/network/nfs/nlockmgr:default online 17:52:29 svc:/network/nfs/cbd:default online 17:52:29 svc:/network/nfs/mapid:default Есть ещё один полезный вариант вызова команды svcs - это svcs -D. Такая команда покажет список всех сервисов, зависимых от указанного - т.е. расследование какой-то проблемы можно начать и с другой стороны. CODE: bash-3.00$ svcs -D svc:/network/nfs/client:default STATE STIME FMRI online Dec_06 svc:/system/filesystem/autofs:default online Dec_06 svc:/system/dumpadm:default online Dec_06 svc:/milestone/multi-user:default Также полезной является опция -p, которая показывает PID процессов, связанных с указанным инстансом сервиса. В примере ниже мы может увидеть процесс и его идентификатор для сервиса svc:/network/nis/client:default (ВНИМАНИЕ! В этом примере используется nis/client, а не nfs/client, как во всех предыдущих примерах) CODE: bash-3.00$ svcs -p svc:/network/nis/client:default STATE STIME FMRI online Dec_06 svc:/network/nis/client:default Dec_06 176 ypbind Этот полезный ключик можно использовать и без указания сервиса, тогда вы получите очень длинный список сервисов с указанием процессов, к ним относящихся. СЛЕДУЕТ ПОМНИТЬ: Сервисы - это не только демоны и запущенные в системе процесс, поэтому в длинном списке, полученном после выполнения на вашей системе svcs -p, далеко не каждый инстанс сервиса будет иметь относящийся к нему процесс. Tuesday, November 23. 2004SMF: Средства обслуживания сервисов - начало
Средства обслуживания сервисов - это SMF (Service Management Facility)
Вкратце, SMF - это механизм отношений между сервисами посредством (взаимных) зависимостей. Это также инфраструктура для автоматического запуска и перезапуска сервисов. И наконец, это репозиторий, где хранится конфигурация и правила для запуска сервисов. На самом простейшем уровне, SMF для новичка - это всего лишь иной способ запускать демоны и приложения в Solaris. Но по мере того, как вы будете изучать всё новые возможности SMF, станет понятно, что это - лишь верхушка айберга. Итак, что можно попробовать немедленно, чтобы начать разбираться с сервисами? svcs -a Эта команда выведет длиннющий список всех сервисов вашей системы, указывая их текущее состояние. Я не буду здесь приводить полный список, лишь покажу часть того, что я вижу у себя на машине. Троеточие обозначает все остальные строчки в выводе команды, которые я здесь опустил (всего я вижу 197 сервисов): CODE: legacy_run Nov_19 lrc:/etc/rc3_d/S84appserv legacy_run Nov_19 lrc:/etc/rc3_d/S84patchserver legacy_run Nov_19 lrc:/etc/rc3_d/S90samba legacy_run Nov_19 lrc:/etc/rc3_d/S99zones disabled Nov_19 svc:/system/metainit:default disabled Nov_19 svc:/network/rpc/nisplus:default disabled Nov_19 svc:/network/nis/server:default ... online Nov_19 svc:/platform/i86pc/kdmconfig:default online Nov_19 svc:/milestone/multi-user:default online Nov_19 svc:/milestone/multi-user-server:default online Nov_19 svc:/system/zones:default online Nov_19 svc:/system/console-login:default online 10:49:19 svc:/network/nfs/status:default online 10:49:19 svc:/network/nfs/nlockmgr:default offline Nov_19 svc:/application/print/ipp-listener:default offline Nov_19 svc:/network/lp:default offline Nov_19 svc:/application/print/rfc1179:default maintenance Nov_19 svc:/network/rpc/meta:tcp6 maintenance Nov_19 svc:/network/rpc/metamed:tcp6 maintenance Nov_19 svc:/network/rpc/metamh:tcp6 maintenance Nov_19 svc:/network/rpc/rstat:udp6 maintenance Nov_19 svc:/network/rpc/rusers:tcp6 maintenance Nov_19 svc:/network/rpc/rusers:udp6 maintenance Nov_19 svc:/network/rpc/spray:udp6 maintenance Nov_19 svc:/network/rpc/wall:udp6 Как видно, каждая строка включает в себя текущее состояние сервиса, дату (время) запуска и идентификатор сервиса и его инстанса. Вот эти самые строчки типа svc:/network/rpc/wall:udp6 называются FMRI - Fault Management Resource Identifier (идентификатор обслуживания сбоев ресурса). /network/rpc/wall - это серсис, а udp6 - это его инстанс. Как видно из примера, сервис может иметь несколько инстансов. Видно, что обычно идентификатор сервиса включает в себя название категории функциональности: application, device, milestone, network, platform, site или system. Соответственно, из FMRI всегда можно узнать, за что каждый сервис скорее всего отвечает... Что касается состояний сервисов, то они могут быть следующими: degraded – инстанс сервиса разрешён, но сервис в ограниченном режиме disabled – инстанс сервиса не разрешён и не запущен legacy_run – сервис на контролируется SMF. Обычно это некоторые rc скрипты в /etc/rc.d/rc*.d каталогах. maintenance – возникла какая-то ошибка, скорее всего нужно вмешательство администратора offline – инстанс сервиса разрешён, но ещё не запущен или не пожет быть запущен online – инстанс сервиса разрешён и успешно запущен uninitialized – это начальное состояние всех сервисов, до того как их конфигурация была прочитана. |





