Diese Seite erhebt keinen Anspruch darauf die Funktion und/oder die Verwendung von systemd vollständig zu beschreiben. Die Lektüre mindestens der Manual-Seiten von systemctl wird unerlässlich sein und bleiben!

Hier schreibe ich vorläufig — und erstmal auch nur ins Unreine — auf, was ich bisher zum Thema systemd (heraus-)gefunden habe.

Allgemeine Beschreibung
after.local
Services von systemd statt xinetd starten lassen
Restarts nach Updates
Kochrezept)
veraltet?

Allgemeine Beschreibung

Das Ganze scheint ein hochgradiges Problem der vorliegenden systemd-Version zu sein. Was ich hier beschreibe, funktioniert unter SuSE 13.1 mit systemd-208-23.3.x86_64. Unter SuSE12.3 mit systemd-195-13.45.1.x86_64 funktioniert offenbar nur ein Teil.

Nützliche Informationen in Form von Dateien sind mir bisher in

	/etc/systemd
	/lib/systemd
	/usr/lib/systemd
über den Weg gelaufen.
Irgendwann ist das Zeug wohl mal von /lib/ nach /usr/lib/ umgezogen. Kann also sein, daß in von mir “vergessenen” Skripten (oder sonstigen Stellen) noch das alte /lib/ steht … (
→ Kochrezept)

Das magische Kommando ist allem Anschein nach systemctl.

Mit

	systemctl --all --full
bzw.
	systemctl -a -l
kriegt man meines Wissens raus, welche Services denn überhaupt so im Angebot sind.

Als besondere (Sub-)Kommandos gibt es:

	systemctl halt
	systemctl poweroff
	systemctl reboot
	systemctl suspend
	…
Bei den ersten dreien kann man ein einfaches --force mitgeben; dann wird versucht Prozesse zu stoppen, Platten/Partitionen sauber aus dem Dateisystem zu entfernen usw., aber ein Mißerfolg dabei läßt das Herunterfahren nicht hängenbleiben. (Glaube ich das wirklich?)
Wird --force doppelt angegeben, wird de facto wohl einfach nur ausgeschaltet; dass das schief- und Daten verlorengehen können, sollte jedem klar sein!
Völlig unklar ist mir auch, wie ich auf die Idee kommen soll, dass ich nach einem hängengebliebenen systemctl halt noch die Chance habe ein weiteres plus --force hinterher zu werfen …
Heute (Feb 2018) hatte ich die Chance Selbiges lernen zu dürfen:
	rechner:~ # systemctl reboot
	Failed to set wall message, ignoring: Connection timed out
	Failed to reboot system via logind: Connection timed out

	^C
	rechner:~ # systemctl --force reboot
	Failed to execute operation: Connection timed out
	rechner:~ # systemctl --force --force reboot
	Rebooting.
	…
(Den ersten Reboot hatte ich nach längerer Wartezeit mit <Ctrl>-C abgewürgt, der zweite kam selber zu seinem Ende.)

Die “normale” Anwendung von systemctl besteht eher in Aufrufen der Art

	systemctl status ntp.service
	systemctl stop cron.service
	systemctl start exim.service
	systemctl enable syslog.service
	…
Und es gibt noch etliche weitere (Sub-)Kommandos.
In früheren Versionen von systemd (SuSE 12.2 und früher) wurde das angehängte .service zwingend verlangt. Inzwischen (seit SuSE 12.3) scheint man es aber auch weglassen zu können.

after.local

Eines der ersten Dinge, die ich mit systemd bewerkstelligen mußte, war nach dem Hochfahren des Rechners ein paar zusätzliche Skripte ablaufen zu lassen. Das hatten wir bis dato (also vor SuSE12.1) einfach in die Datei

	/etc/init.d/after.local
reingeschrieben, diese mit chkconfig passend aktiviert und dann wurde es als Letztes beim Hochfahren abgearbeitet.

Während meiner Suche, wie ich das mit dem systemd wieder ans Spielen kriegen kann, bin ich über etwas gestolpert, was ich mir als

	#
	## http://forums.opensuse.org/blogs/jdmcdaniel3/systemd-using-after-local-script-opensuse-12-1-71/
	## "systemd and using the after.local script in openSUSE 12.1"
	## by jdmcdaniel3 
	## 
	## new URL:
	## https://forums.opensuse.org/content.php/120-systemd-and-using-the-after-local-script-in-openSUSE-12-1
	## (01/2015)
	##
	## !!!
	## do not forget to enable this service:
	##	systemctl enable /lib/systemd/system/after.local.service
	## !!!
	##
	#  This file is part of systemd.
	#
	#  systemd is free software; you can redistribute it and/or modify it
	#  under the terms of the GNU General Public License as published by
	#  the Free Software Foundation; either version 2 of the License, or
	#  (at your option) any later version.

	[Unit]
	Description=/etc/init.d/after.local Compatibility
	After=network.target
	ConditionFileIsExecutable=/etc/init.d/after.local

	[Service]
	Type=oneshot
	ExecStart=/etc/init.d/after.local
	TimeoutSec=0
	StandardOutput=tty
	RemainAfterExit=yes
	SysVStartPriority=99

	[Install]
	WantedBy=multi-user.target

abgelegt habe.
(Die Kommentarzeilen, die mit Doppel-Lattenzaun (##) beginnen, sind vermutlich von mir; den Rest habe ich wohl von der dort angegebenen URL übernommen.)

Und in der

	/etc/init.d/after.local
habe ich vorsichtshalber die Anmerkung
	# Seit SuSE12.1 wird angefangen 'init' & Co. durch 'systemd' zu ersetzen.
	# Dafuer muss ausser dieser Datei auch
	#	/lib/systemd/system/after.local.service
	# angelegt und mit
	#	systemctl enable after.local.service
	# aktiviert werden.
	#
hinterlegt, dass auch andere Kollegen daran erinnert werden, wie man den “alten” after.local-Mechanismus mit systemd ans Laufen kriegen kann.

Services von systemd statt xinetd starten lassen

Bei RedHat Scientific Linux 7.3 war ich erstmals mit dem Problem konfrontiert, dass im Paket für den ftp-Server keine Datei für /etc/xinetd.d mehr mitgeliefert wurde, wohl aber für den systemd.

Nach etwas Suchen bin ich dann über

	systemctl enable vsftpd.target
	systemctl start vsftpd.target
gestolpert und schon lauschte der entsprechende Prozess auf Port 21.

Wenn ich jetzt noch gleich an die Firewall gedacht hätte … ich hätte mich glatt für gut gehalten.

Restarts nach Updates

Bei SuSE kann man sich nach einem Update einzelner oder mehrerer Pakete mit zypper ps anzeigen lassen welche Prozess unter ausgetauschten oder gelöschten Dateien “leiden”. In einer der Spalten wird auch (manchmal) angegeben, welcher Service neu gestartet werden muss damit der betreffende Prozess aus der Liste verschwindet. Oft genug steht in der mit Service überschriebenen Spalte nichts und der Name des Services weicht vom Prozessnamen ab.

Deshalb habe ich hier (an für mich zentraler Stelle) eine Sammlung von Zuordnungen hinterlegt.
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit; das ist einfach nur, was mir bisher so untergekommen ist …
(Vielleicht werde ich mal noch die Einträge, bei denen Prozess- und Service-Name übereinstimmen in eine separate Tabelle auslagern; ob das der Übersichtlichkeit wirklich dienlich sein wird???)

Prozess Service
acpidacpid
agettygetty@tty1 getty@tty2
auditdauditd
bluetoothdbluetooth
cleanupcleanup
console-kit-daemonconsole-kit-daemon
croncron
cupsdcups
dbusdbus
dbus-daemondbus
dmeventdm-event
gdbusdbus
gmainudisks
gpmgpm
havegedhaveged
irqbalanceirqbalance
kdmdisplay-manager
lvmetadlvm2-lvmetad
mcelogmcelog
mdadmmdmonitor
ntpdntpd
polkitdpolkit
rpc.statdrpc-statd
rpcbindrpcbind
snmpdsnmpd
sshdsshd
syslog-ngsyslog
systemd-journaldsystemd-journald
systemd-logindsystemd-logind
systemd-udevdsystemd-udevd
wickedd*wickedd
wpa_supplicantwpa_supplicant
xe-daemonxe-linux-distribution
xinetdxinetd

Kochrezept

Bei systemd scheint noch so allerhand im Umbruch zu sein. Deshalb hier ein kurzer Abriss, wie man ggf. Namen und Pfade herausfinden kann.

Mit

	systemctl --all --full
kann man verhältnismäßig einfach herausfinden, welche Services es denn so gibt und wie sie sich buchstabieren. Mit einem solchen Service (z. B. ntp bzw. ntpd) kann man sich dann weiter durchhangeln:
	host:[~]# systemctl --all --full | grep ntp
	ntpd.service                           loaded    active   running   NTP Server Daemon
	host:[~]# systemctl status ntpd
	ntpd.service - NTP Server Daemon
	   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled)
	   Active: active (running) since Mon 2015-03-23 07:53:19 CET; 3 days ago
	     Docs: man:ntpd(1)
	 Main PID: 1611 (ntpd)
	   CGroup: /system.slice/ntpd.service
		   тт1611 /usr/sbin/ntpd -p /var/run/ntp/ntpd.pid -g -u ntp:ntp -c /etc/ntp.conf

	Mar 23 07:53:19 host start-ntpd[1592]: Starting network time protocol daemon (NTPD)
	host:[~]#
So kann man die Dateien für den systemd relativ schnell lokalisieren.

veraltet?

Was hier steht, stand früher mal weiter oben. Inzwischen tut es jedoch nicht mehr oder nicht mehr so wie beschrieben. Zum Wegwerfen war's mir doch zu schade; also habe ich es hier geparkt:


Etwas spezieller wird es bei den Netzwerk-Interfaces; mit systemctl restart network.service werden alle Interfaces herunter- und wieder hochgefahren. Das ist aber nicht immer gewünscht. Mit

	systemctl enable network@vlan1008.service
	systemctl start network@vlan1008.service
läßt sich ein — mit welchem Tool auch immer — neu angelegtes Netzwerk-Interface selektiv in Betrieb nehmen. Ohne es bisher explizit ausprobiert zu haben, gehe ich davon aus, dass auch andere (Sub-)Kommandos so funktionieren.

Ebenso andere Services wie arpwatch, die ich mit

	systemctl enable arpwatch@vlan1008.service
	systemctl start arpwatch@vlan1008.service
ans Spielen gekriegt habe.


Disclaimer:

Die auf diesen Seiten zum Ausdruck gebrachten Meinungen sind die meinigen, nicht notwendigerweise die der Universität Osnabrück. (Es sei denn, sie würden zufällig übereinstimmen oder wären entsprechend gekennzeichnet.)

Zum Thema "Links":

Bei "Links" handelt es sich stets um "lebende" (dynamische) Verweisungen. Gernot Skalla hat bei der erstmaligen Verknüpfung zwar den fremden Inhalt daraufhin überprüft, ob durch ihn eine mögliche zivilrechtliche oder strafrechtliche Verantwortlichkeit ausgelöst wird. Er überprüft aber die Inhalte, auf die er in seinem Angebot verweist, nicht ständig auf Veränderungen, die eine Verantwortlichkeit neu begründen könnten. Wenn er feststellt oder von anderen darauf hingewiesen wird, daß ein konkretes Angebot, zu dem er einen Link bereitgestellt hat, eine zivil- oder strafrechtliche Verantwortlichkeit auslöst, wird er den Verweis auf dieses Angebot aufheben.

(Quelle: Impressum/Disclaimer des Berliner Beauftragten für Datenschutz und Informationsfreiheit Stand: 09/2002)

Last change: Wed Feb 28 09:57:36 CET 2018