======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 ('''') * Standard-Status * Abhängigkeiten zu anderen Diensten ('''') * Verhalten im Fehlerfall - z.B. abgestürzte Prozesse * Auszuführende Kommandos für Start/Stop/Refresh ('''') * Spezielle Dienst-Prozessparameter (sogenannte Properties), wie beispielsweise ''tcp_keepalive'' bei ''inetd'' - Properties stellen __**keine**__ Dienst-Konfiguration, wie beispielsweise FTP-Benutzer eines FTP-Servers, dar! ('''') * Verweis zur Man-Page ('''') * ... ======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====== * PDF "Solaris Service Management Facility" von Dipl. Chem. Rainer Orth, Technische Fakultät der Universität Bielefeld: [[http://www.techfak.uni-bielefeld.de/~ro/talks/smf.pdf]]