Init/System/Vergleich: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
K Textersetzung - „–“ durch „-“ |
||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Beschreibung == | === Beschreibung === | ||
Dienst bei allen drei Systemen im Vergleich | Dienst bei allen drei Systemen im Vergleich | ||
* Ausgewählt wurde hierzu [ | * Ausgewählt wurde hierzu [https://wiki.ubuntuusers.de/cron cron], der auf den meisten Systemen zu finden ist | ||
==== SysVinit ==== | ==== SysVinit ==== | ||
| Zeile 81: | Zeile 81: | ||
* Grundlegend machen alle drei Varianten das Gleiche | * Grundlegend machen alle drei Varianten das Gleiche | ||
* Jedoch ist es bei SysVinit nicht ganz so einfach zu sehen, was genau passiert | * Jedoch ist es bei SysVinit nicht ganz so einfach zu sehen, was genau passiert | ||
* Cron ist in diesem Fall ein sehr einfaches Beispiel, Dienste wie zum Beispiel [ | * Cron ist in diesem Fall ein sehr einfaches Beispiel, Dienste wie zum Beispiel [https://wiki.ubuntuusers.de/postfix postfix] haben wesentlich komplexere Init-Skripte, wohingegen die Komplexität von upstart Jobs oder systemd Units nur unwesentlich zunimmt | ||
* Der upstart-Job wäre, wenn er in /etc/init liegt, schon direkt aktiviert und würde beim Starten des Systems abgearbeitet werden | * Der upstart-Job wäre, wenn er in /etc/init liegt, schon direkt aktiviert und würde beim Starten des Systems abgearbeitet werden | ||
* SysVinit und systemd erfordern hierzu Links in <tt>/etc/rcX.d</tt> (Debian/Ubuntu) beziehungsweise <tt>/etc/systemd/system</tt> | * SysVinit und systemd erfordern hierzu Links in <tt>/etc/rcX.d</tt> (Debian/Ubuntu) beziehungsweise <tt>/etc/systemd/system</tt> | ||
| Zeile 87: | Zeile 87: | ||
* Für systemd gibt es <tt>systemctl enable dienst.service</tt>, welches sich um das Anlegen des Links kümmert | * Für systemd gibt es <tt>systemctl enable dienst.service</tt>, welches sich um das Anlegen des Links kümmert | ||
* Im systemd-Unit wurde hier übrigens definiert, dass cron.service zum Target multi-user.target gehört, das entspricht einem Mehrbenutzerrunlevel im normalen SysVinit ohne grafische Oberfläche | * Im systemd-Unit wurde hier übrigens definiert, dass cron.service zum Target multi-user.target gehört, das entspricht einem Mehrbenutzerrunlevel im normalen SysVinit ohne grafische Oberfläche | ||
* Wer jetzt glaubt im grafischen Modus (mit [ | * Wer jetzt glaubt im grafischen Modus (mit [https://wiki.ubuntuusers.de/GDM GDM], [https://wiki.ubuntuusers.de/KDM KDM], ...) keinen cron haben zu können, irrt: | ||
** Targets können von anderen Targets abhängen und so definiert beispielsweise graphical.target | ** Targets können von anderen Targets abhängen und so definiert beispielsweise graphical.target - welches bei den meisten Distributionen der Standard ist - dass doch bitte zuerst multi-user.target gestartet werden möchte | ||
* Die ''WantedBy'' Definition ist übrigens nur ein Vorschlag für systemctl | * Die ''WantedBy'' Definition ist übrigens nur ein Vorschlag für systemctl | ||
* Es ist jederzeit möglich durch eigene Symlinks unterhalb von /etc/systemd/system/ das Verhalten und die Reihenfolge zu modifizieren | * Es ist jederzeit möglich durch eigene Symlinks unterhalb von /etc/systemd/system/ das Verhalten und die Reihenfolge zu modifizieren | ||
* Unabhängig davon werden jedoch andere Abhängigkeiten der einzelnen Units beachtet | * Unabhängig davon werden jedoch andere Abhängigkeiten der einzelnen Units beachtet | ||
* Dies führt zum Beispiel immer dazu, dass Avahi gestartet wird, wenn ein Dienst diesen benötigt, unabhängig davon, in welchem Target der Dienst gestartet wird | * Dies führt zum Beispiel immer dazu, dass Avahi gestartet wird, wenn ein Dienst diesen benötigt, unabhängig davon, in welchem Target der Dienst gestartet wird | ||
[[Kategorie:Init]] | |||
Aktuelle Version vom 11. Mai 2025, 19:55 Uhr
Beschreibung
Dienst bei allen drei Systemen im Vergleich
- Ausgewählt wurde hierzu cron, der auf den meisten Systemen zu finden ist
SysVinit
#!/bin/sh
# Start/stop the cron daemon
#
### BEGIN INIT INFO
# Provides: cron
# Required-Start: $syslog $time
# Required-Stop: $syslog $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Regular background program processing daemon
# Description: cron is a standard UNIX program that runs user-specified
# programs at periodic scheduled times. vixie cron adds a
# number of features to the basic UNIX cron, including better
# security and more powerful configuration options
### END INIT INFO
test -f /usr/sbin/cron || exit 0
#LSBNAMES='-l' # Uncomment for LSB name support in /etc/cron.d/
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting periodic command scheduler" "crond"
start-stop-daemon --start --quiet --pidfile /var/run/crond.pid --name cron --startas /usr/sbin/cron -- $LSBNAMES
log_end_msg $?
;;
stop) log_daemon_msg "Stopping periodic command scheduler" "crond"
start-stop-daemon --stop --quiet --pidfile /var/run/crond.pid --name cron
log_end_msg $?
;;
restart) log_daemon_msg "Restarting periodic command scheduler" "crond"
start-stop-daemon --stop --retry 5 --quiet --pidfile /var/run/crond.pid --name cron
start-stop-daemon --start --quiet --pidfile /var/run/crond.pid --name cron --startas /usr/sbin/cron -- $LSBNAMES
log_end_msg $?
;;
reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "crond"
# cron reloads automatically
log_end_msg 0
;;
*) log_action_msg "Usage: /etc/init.d/cron {start|stop|restart|reload|force-reload}"
exit 2
;;
esac
exit 0
Upstart
# cron - regular background program processing daemon # # cron is a standard UNIX program that runs user-specified programs at # periodic scheduled times description "regular background program processing daemon" start on runlevel [2345] stop on runlevel [!2345] expect fork respawn exec cron
systemd
[Unit] Description=Periodic Command Scheduler
[Service] ExecStart=/usr/sbin/crond -n ExecReload=/bin/kill -HUP $MAINPID Restart=always
[Install] WantedBy=multi-user.target
Zusammenfassung
- Grundlegend machen alle drei Varianten das Gleiche
- Jedoch ist es bei SysVinit nicht ganz so einfach zu sehen, was genau passiert
- Cron ist in diesem Fall ein sehr einfaches Beispiel, Dienste wie zum Beispiel postfix haben wesentlich komplexere Init-Skripte, wohingegen die Komplexität von upstart Jobs oder systemd Units nur unwesentlich zunimmt
- Der upstart-Job wäre, wenn er in /etc/init liegt, schon direkt aktiviert und würde beim Starten des Systems abgearbeitet werden
- SysVinit und systemd erfordern hierzu Links in /etc/rcX.d (Debian/Ubuntu) beziehungsweise /etc/systemd/system
- Zur Verwaltung dieser Links gibt es auf einem Debian oder Ubuntu System das Tool update-rc.d
- Für systemd gibt es systemctl enable dienst.service, welches sich um das Anlegen des Links kümmert
- Im systemd-Unit wurde hier übrigens definiert, dass cron.service zum Target multi-user.target gehört, das entspricht einem Mehrbenutzerrunlevel im normalen SysVinit ohne grafische Oberfläche
- Wer jetzt glaubt im grafischen Modus (mit GDM, KDM, ...) keinen cron haben zu können, irrt:
- Targets können von anderen Targets abhängen und so definiert beispielsweise graphical.target - welches bei den meisten Distributionen der Standard ist - dass doch bitte zuerst multi-user.target gestartet werden möchte
- Die WantedBy Definition ist übrigens nur ein Vorschlag für systemctl
- Es ist jederzeit möglich durch eigene Symlinks unterhalb von /etc/systemd/system/ das Verhalten und die Reihenfolge zu modifizieren
- Unabhängig davon werden jedoch andere Abhängigkeiten der einzelnen Units beachtet
- Dies führt zum Beispiel immer dazu, dass Avahi gestartet wird, wenn ein Dienst diesen benötigt, unabhängig davon, in welchem Target der Dienst gestartet wird