Systemctl basis: Unterschied zwischen den Versionen
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=Unsere erste Service unit= | =Unsere erste Service unit= | ||
*nano /etc/systemd/system/simple-http.service | *nano /etc/systemd/system/simple-http.service | ||
| Zeile 29: | Zeile 16: | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</pre> | </pre> | ||
| + | =Verzeichnis anlegen= | ||
| + | *mkdir -p /srv/www | ||
=Handling= | =Handling= | ||
| Zeile 43: | Zeile 32: | ||
;Kontrolle ob der Port geöffnet ist | ;Kontrolle ob der Port geöffnet ist | ||
*ss -lntp | grep 8000 | *ss -lntp | grep 8000 | ||
| + | =Ein paar Datein zum Downloaden ins Verzeichnis schieben= | ||
| + | *cp /usr/bin/* /srv/www/ | ||
=Erklärung= | =Erklärung= | ||
| Zeile 53: | Zeile 44: | ||
*Type=simple | *Type=simple | ||
Gibt an, dass dies ein einfacher Dienst ist. systemd nimmt an, dass der Dienst sofort nach dem Starten des in ExecStart angegebenen Befehls einsatzbereit ist. | Gibt an, dass dies ein einfacher Dienst ist. systemd nimmt an, dass der Dienst sofort nach dem Starten des in ExecStart angegebenen Befehls einsatzbereit ist. | ||
| − | + | *WorkingDirectory=/srv/www | |
| − | |||
| − | *WorkingDirectory=/ | ||
Das Arbeitsverzeichnis für den Dienst. Hier wird der Dienst im Verzeichnis /home/thomas/html ausgeführt. | Das Arbeitsverzeichnis für den Dienst. Hier wird der Dienst im Verzeichnis /home/thomas/html ausgeführt. | ||
*ExecStart=/usr/bin/python3 -m http.server | *ExecStart=/usr/bin/python3 -m http.server | ||
| Zeile 66: | Zeile 55: | ||
=Zusammenfassung= | =Zusammenfassung= | ||
| − | Die Datei definiert einen systemd-Dienst, der einen einfachen HTTP-Server startet | + | Die Datei definiert einen systemd-Dienst, der einen einfachen HTTP-Server startet und im Verzeichnis /srv//www arbeitet. Der Dienst wird automatisch neu gestartet, wenn er abstürzt, und er wird nach dem Netzwerkdienst gestartet. Der Dienst wird im Mehrbenutzermodus ohne grafische Benutzeroberfläche verfügbar gemacht. |
| + | [[Kategorie:systemd]] | ||
| + | [[Kategorie:Troubleshooting]] | ||
| + | =Schaubild= | ||
| + | {{#drawio:journal}} | ||
| + | * '''journalctl''' ist loggt die Nachrichten und Fehlermeldungen von [[:Kategorie:systemd|systemd]]-Diensten | ||
| + | * Ab Debian 12 ist das der Standard syslog und löst [[rsyslog]] ab | ||
| + | |||
| + | = letzte 10 Zeilen eines Dienstes anzeigen = | ||
| + | * '''journalctl -u ''simple-http'' -n 10''' | ||
| + | * ''-u'' steht für Unit und muss der exakte Dienstname sein (''.service'' kann aber weggelassen werden) | ||
| + | |||
| + | = Nur Neue Nachrichten anzeigen = | ||
| + | * Neue Nachrichten | ||
| + | * '''journalctl -f -u simple-http''' | ||
| + | |||
| + | |||
| + | |||
| + | = Kernel-Log des letzten Boots= | ||
| + | * Im Kernel-Log stehen Meldungen von Programmen wie [[:Kategorie:nftables|nftables]] | ||
| + | * Diese werden nicht über den jeweiligen Dienst geloggt, sondern über eine ''syslog-Kennung'' (-t oder --identifier) | ||
| + | * '''journalctl -t kernel -b''' | ||
Aktuelle Version vom 29. Januar 2026, 13:05 Uhr
Unsere erste Service unit
- nano /etc/systemd/system/simple-http.service
[Unit] Description=My Miscellaneous Service After=network.target [Service] Type=simple WorkingDirectory=/srv/www ExecStart=/bin/python3 -m http.server Restart=on-abort [Install] WantedBy=multi-user.target
Verzeichnis anlegen
- mkdir -p /srv/www
Handling
- Änderungen laden
- systemctl daemon-reload
- Starten des Dienstes
- systemctl start simple-http.service
- Aktivieren des Dienstes beim Neustart des Systems
- systemctl enable simple-http.service
- Status anzeigen
- systemctl status simple-http.service
- Systemd Logs
- journalctl -fu simple-http.service
- Kontrolle ob der Port geöffnet ist
- ss -lntp | grep 8000
Ein paar Datein zum Downloaden ins Verzeichnis schieben
- cp /usr/bin/* /srv/www/
Erklärung
- [Unit]
- Description=My Miscellaneous Service
Eine Beschreibung des Dienstes. In diesem Fall wird der Dienst als "My Miscellaneous Service" beschrieben.
- After=network.target
Gibt an, dass dieser Dienst erst gestartet wird, nachdem das Netzwerksystem gestartet wurde.
- [Service]
- Type=simple
Gibt an, dass dies ein einfacher Dienst ist. systemd nimmt an, dass der Dienst sofort nach dem Starten des in ExecStart angegebenen Befehls einsatzbereit ist.
- WorkingDirectory=/srv/www
Das Arbeitsverzeichnis für den Dienst. Hier wird der Dienst im Verzeichnis /home/thomas/html ausgeführt.
- ExecStart=/usr/bin/python3 -m http.server
Der Befehl, der ausgeführt wird, um den Dienst zu starten. In diesem Fall startet Python3 einen einfachen HTTP-Server.
- Restart=on-abort
Der Dienst wird neu gestartet, wenn er unerwartet beendet wird (z.B. durch einen Absturz).
- [Install]
- WantedBy=multi-user.target
Dieser Schlüssel gibt an, dass der Dienst im multi-user.target gestartet wird. multi-user.target ist ein systemd-Ziel, das eine Nicht-Grafik-Benutzeroberfläche beschreibt und im Wesentlichen einen Mehrbenutzermodus ohne GUI darstellt.
Zusammenfassung
Die Datei definiert einen systemd-Dienst, der einen einfachen HTTP-Server startet und im Verzeichnis /srv//www arbeitet. Der Dienst wird automatisch neu gestartet, wenn er abstürzt, und er wird nach dem Netzwerkdienst gestartet. Der Dienst wird im Mehrbenutzermodus ohne grafische Benutzeroberfläche verfügbar gemacht.
Schaubild
- journalctl ist loggt die Nachrichten und Fehlermeldungen von systemd-Diensten
- Ab Debian 12 ist das der Standard syslog und löst rsyslog ab
letzte 10 Zeilen eines Dienstes anzeigen
- journalctl -u simple-http -n 10
- -u steht für Unit und muss der exakte Dienstname sein (.service kann aber weggelassen werden)
Nur Neue Nachrichten anzeigen
- Neue Nachrichten
- journalctl -f -u simple-http
Kernel-Log des letzten Boots
- Im Kernel-Log stehen Meldungen von Programmen wie nftables
- Diese werden nicht über den jeweiligen Dienst geloggt, sondern über eine syslog-Kennung (-t oder --identifier)
- journalctl -t kernel -b
