Aufbau
In Solaris 10 löste die „Service Management Facility“ (SMF) die klassischen und angestaubten Initskripte ab. Dadurch ergaben sich zahlreiche Vorteile, wie beispielsweise bessere Abhängigkeitsbildung und wirklich parallelisiertes Starten von Diensten.
In einem Fehlerfall werden Dienste neugestartet, sodass Applikationen immer zur Verfügung stehen:
# svcs -p inetd
STATE STIME FMRI
online 22:06:54 svc:/network/inetd:default
22:06:54 1343 inetd
# kill -9 1343; svcs -p inetd
STATE STIME FMRI
offline 22:25:29 svc:/network/inetd:default
# svcs -p inetd
STATE STIME FMRI
online 22:25:29 svc:/network/inetd:default
22:25:29 1435 inetd
# tail /var/svc/log/network-inetd:default.log
[ Jul 19 22:25:29 Stopping because process received fatal signal from outside the service. ]
[ Jul 19 22:25:29 Executing stop method ("/usr/lib/inet/inetd stop"). ]
[ Jul 19 22:25:29 Method "stop" exited with status 0. ]
[ Jul 19 22:25:29 Executing start method ("/usr/lib/inet/inetd start"). ]
[ Jul 19 22:25:29 Method "start" exited with status 0. ]
Stati
Alte Initskript-Dienste sind zu SMF kompatibel und können weiterhin verwendet werden. Ersichtlich ist das durch den auffälligen Dienststatus „legacy_run
“. Ein Dienst kann folgende Stati haben:
Status | Bedeutung |
uninitialized | Dienst unkonfiguriert |
disabled | deaktivierter Dienst |
offline | Dienst wartet auf Ereignis |
online | Dienst aktiv |
degraded | (teilweise) fehlerhafter Dienst |
maintenance | Dienst konnte nicht gestartet werden |
legacy_run | alter init.d-Dienst |
Ein Dienst wird immer im „FMRI“-Format (Fault Managed Resource Identifier) angegeben: svc:/GRUPPE/dienst:default
z.B. svc:/network/inetd:default
für den Inetd-Superserver.
Manifest und Logs
Dienste werden durch ein XML-Manifest unterhalb von /lib/svc/manifest
definiert und pflegen ein eigenes Logfile unterhalb von /var/svc/log
.
Im Manifest werden beispielsweise definiert:
Name (<service>
)
Standard-Status
Abhängigkeiten zu anderen Diensten (<dependency>
)
Verhalten im Fehlerfall - z.B. abgestürzte Prozesse
Auszuführende Kommandos für Start/Stop/Refresh (<exec_method>
)
Spezielle Dienst-Prozessparameter (sogenannte Properties), wie beispielsweise
tcp_keepalive
bei
inetd
- Properties stellen
keine Dienst-Konfiguration, wie beispielsweise
FTP-Benutzer eines
FTP-Servers, dar! (
<property>
)
Verweis zur Man-Page (<documentation>
)
…
Kommandos
Zur Verwaltung von Diensten über das SMF stehen 4 Kommandos zur Verfügung:
Kommando | Verwendung |
svcs | Statusinformationen |
svcadm | Administration, aktivieren/deaktivieren |
svccfg | Konfiguration der Dienste |
svcprop | Anzeigen von Properties |
svcs
none / -a
Parameter: | -a bzw. keine |
Bedeutung: | Alle Services anzeigen |
Beispiel: | # svcs
# svcs -a
|
-D
Parameter: | -D |
Bedeutung: | Zeigt Dienste an, die von einem anderen (als FMRI definieren) abhängig sind. |
Beispiel: | # svcs -D device/local
STATE STIME FMRI
disabled 21:13:14 svc:/system/hotplug:default
disabled 21:13:14 svc:/system/wusbd:default
online 21:13:16 svc:/system/filesystem/minimal:default
online 21:13:17 svc:/milestone/devices:default
online 21:13:35 svc:/system/hal:default
online 21:13:35 svc:/milestone/self-assembly-complete:default
|
Erklärung | Die deaktivierten Dienste hotplug:default und wusbd:default , sowie die aktivierten Dienste filesystem/minimal:default , devices:default , etc… sind vom Dienst device/local abhängig. |
-l
Parameter: | -l |
Bedeutung: | Zeigt Details zu einem Dienst an |
Beispiel: | # svcs -l inetd
fmri svc:/network/inetd:default
name inetd
enabled true
state online
next_state none
state_time 19. Juli 2012 22:25:29 Uhr CEST
logfile /var/svc/log/network-inetd:default.log
restarter svc:/system/svc/restarter:default
contract_id 132
manifest /etc/svc/profile/generic.xml
manifest /lib/svc/manifest/network/inetd.xml
dependency require_any/error svc:/network/loopback (online)
dependency require_all/error svc:/system/filesystem/local (online)
dependency optional_all/error svc:/milestone/network (online)
dependency optional_all/error svc:/network/rpc/bind (online)
dependency optional_all/none svc:/network/inetd-upgrade (disabled)
dependency require_all/none svc:/milestone/name-services (online)
|
Erklärung: | Der Dienst inetd:default ist aktiv und wird automatisch beim Boot gestartet. Der Dienste wurde am 19.Juli 2012 gestartet und schreibt seine Logs nach /var/svc/log/network-inetd:default.log . Der Dienst wird durch zwei Manifest definiert und ist von zahlreichen Diensten abhängig. |
-n
Parameter: | -n |
Bedeutung: | Zeigt Benachrichtigungseinstellungen (z.B. SNMP) eines Dienstes an. |
Beispiel: | # svcs -n inetd
Notification parameters for FMA Events
Event: problem-diagnosed
Notification Type: smtp
Active: true
reply-to: root@localhost
to: root@localhost
Notification Type: snmp
Active: true
Notification Type: syslog
Active: true
Event: problem-repaired
Notification Type: snmp
Active: true
Event: problem-resolved
Notification Type: snmp
Active: true
|
Erklärung | Für den Dienst inetd sind detailierte Fehler-Warnungen und -Entwarnung über SNMP aktiviert. Darüber hinaus werden erkannte Fehler auch per SMTP an root@localhost gemeldet. |
-p
Parameter: | -p |
Bedeutung: | Zeigt evtl. gestartete Prozesse für einen Service bzw. eine Serviceinstanz an |
Beispiel: | # svcs -p inetd
STATE STIME FMRI
online 21:13:34 svc:/network/inetd:default
21:13:34 462 inetd
|
Erklärung | Für den Dienst inetd ist ein Prozess inetd mit der PID 462 gestartet. |
Internetverweise