Работа со сервисами в Solaris немного отличается от привычной в Linux/FreeBSD. Управление сервисами осуществляется через утилиты svc* (svcadm, svcs, svccfg, svcprop), а если сервисы запущены через inetd, то управляться должны через inetadm.
Тестовый стенд: Solaris 10
Пару слов скажу об управлении сервисами. Так же как и в других *nix системах, существует 2 способа запуска сервисов: через inetd и через SMF. Я рекомендую использовать SMF. Ниже будет рассмотрен способ управления через SMF. Об inetd будет сказано отдельно
Способ управления через SMF
1) Информация о сервисах:
$ svcs | more
STATE STIME FMRI
legacy_run 19:00:13 lrc:/etc/rc2_d/S20sysetup
legacy_run 19:00:13 lrc:/etc/rc2_d/S72autoinstall
legacy_run 19:00:13 lrc:/etc/rc2_d/S73cachefs_daemon
legacy_run 19:00:13 lrc:/etc/rc2_d/S89PRESERVE
legacy_run 19:00:13 lrc:/etc/rc2_d/S98deallocate
legacy_run 19:00:14 lrc:/etc/rc3_d/S16boot_server
online 19:00:04 svc:/system/svc/restarter:default
online 19:00:05 svc:/network/pfil:default
online 19:00:05 svc:/network/loopback:default
online 19:00:05 svc:/network/physical:default
online 19:00:06 svc:/system/filesystem/root:default
online 19:00:07 svc:/system/boot-archive:default
...
Если нужно посмотреть список абсолютно всех, даже отключенных, используем команду
# svcs -a
Получить информацию о конкретном сервисе:
$ svcs ssh
STATE STIME FMRI
online 19:00:13 svc:/network/ssh:default
Или в расширенном виде (список зависимостей, uptime сервиса и прочее)
$ svcs -l ssh
fmri svc:/network/ssh:default
name SSH server
enabled true
state online
next_state none
state_time 14 листопада 2011 р. 19:00:13 EET
logfile /var/svc/log/network-ssh:default.log
restarter svc:/system/svc/restarter:default
contract_id 123
dependency require_all/none svc:/system/filesystem/local (online)
dependency optional_all/none svc:/system/filesystem/autofs (online)
dependency require_all/none svc:/network/loopback (online)
dependency require_all/none svc:/network/physical (online)
dependency require_all/none svc:/system/cryptosvc (online)
dependency require_all/none svc:/system/utmp (online)
dependency require_all/restart file://localhost/etc/ssh/sshd_config (online)
Так же для расширенного вывода информации можно использовать ключ ‘-v’
2) Управление сервисами
– запустить (включить)
#svcadm enable ssh
Если нужно запустить однажды (будет запущен только до ребута), используем ключ ‘-t’:
#svcadm enable -t ssh
Так же полезен ключ ‘-r’, который выполняет рекурсивно для зависимостей данную команду.
– перезапустить
#svcadm restart ssh
– перечитать конфиг (сделать reload)
#svcadm refresh ssh
– остановить (отключить)
#svcadm disable ssh
Так же можно использовать ключ ‘-t’ как и в случае с enable
– узнать инфу, если сервис недоступен (например, почему?)
#svcadm -x
Ещё можно использовать ключ ‘-v’ для всех опций svcadm для выводы дебага в консоль.
3) Управление параметрами сервисов
Что бы получить информацию о переменных сервиса, существует команда svcprop. К примеру, получим информацию о параметрах сервиса ssh:
# svcprop -Cv ssh
general/enabled boolean true
restarter/logfile astring /var/svc/log/network-ssh:default.log
restarter/contract count 123
restarter/start_pid count 772
restarter/start_method_timestamp time 1321290013.364066000
restarter/start_method_waitstatus integer 0
restarter/auxiliary_state astring none
restarter/next_state astring none
restarter/state astring online
restarter/state_timestamp time 1321290013.368185000
Как видим, можно узнать куда пишутся логи, uptime. Вывод чем-то похож на svcs.
Для управления конфигурацией сервисе служит программа svccfg. С ей помощью вы можете изменять параметры сервиса, выгружать и загружать конфигурацию. Она имеет 2 режима: интерактивный и командный. Для более подробной информации обратитесь к документации.
4) Логгирование.
Каждый сервис пишет свои сообщения только в свой лог (за исключением syslog и прочих общих логов) в каталог /var/svc/log. В нём он создаёт файл с полным именем, к примеру network-dns-client:default.log.
Способ управления через inetd
Здесь всё достаточно просто. Есть одна команда для управления, просмотра – inetadm.
– посмотреть сервисы
# inetadm
ENABLED STATE FMRI
disabled disabled svc:/network/rexec:default
disabled disabled svc:/network/echo:dgram
disabled disabled svc:/network/echo:stream
enabled online svc:/network/stlisten:default
enabled online svc:/network/finger:default
...
– информация о сервисе
# inetadm -l telnet
SCOPE NAME=VALUE
name="telnet"
endpoint_type="stream"
proto="tcp6"
isrpc=FALSE
wait=FALSE
exec="/usr/sbin/in.telnetd"
user="root"
default bind_addr=""
default bind_fail_max=-1
default bind_fail_interval=-1
default max_con_rate=-1
default max_copies=-1
default con_rate_offline=-1
default failrate_cnt=40
default failrate_interval=60
default inherit_env=TRUE
default tcp_trace=FALSE
default tcp_wrappers=FALSE
default connection_backlog=10
– включить/выключить
делается это через ключи ‘-e’/’-d’
#inetadm -e telnet
– изменить параметры сервиса
Используем ключи -m (для конкретного сервиса) и -M (глобальные параметры; их кстати, можно посмотреть командой inetadm -p)