Dies ist eine alte Version des Dokuments!
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:defaultundwusbd:default, sowie die aktivierten Dienstefilesystem/minimal:default,devices:default, etc… sind vom Dienstdevice/localabhä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:defaultist aktiv und wird automatisch beim Boot gestartet. … | 
 
-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 inetdsind detailierte Fehler-Warnungen und -Entwarnung über SNMP aktiviert. Darüber hinaus werden erkannte Fehler auch per SMTP anroot@localhostgemeldet. | 
 
-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 inetdist ein Prozessinetdmit der PID462gestartet. | 
 
Internetverweise