ubuntuusers.de

systemd-Dienst bei Nuestart/Shutdown

Status: Ungelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18273

Hallo, ich überarbeite gerade den Artikel Soundausgabe Systemlautsprecher Es geht darum, den Piepton-Befehl beim Runterfahren/Neustarten des Systems zu starten. Wie wären diese Dienste einzurichten?

Wäre der Typ simple geeignet oder oneshot besser? ExecStart ist dann der beep-Befehl. Der Dienst kommt nach /etc/systemd/system und hat Endung .service.

reboot.target für Neustart poweroff.target für Runterfahren? Stimmen diese Annahmen? Ich kann leider gerade nicht "experimentieren".

LG DJKuhpisse

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

eine Google-Suche nach "systemd unit shutdown" bringt u.a das: https://unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown

Gruß, noisefloor

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

Du kannst beide nehmen, es spielt in diesem Fall keine Rolle, "falsch" gibt es hierbei nicht. Der Unterschied liegt darin, dass der Prozess in "oneshot" zuerst beendet werden muss, bevor systemd Folge-Units startet, bei "simple" aber nicht. Das ist aber hier völlig irrelvant, weil Beep sowieso sofort zurückkehrt. Ich würde "oneshot" nehmen.

Um reboot.target, poweroff.target bzw. alle Targets, die damit im Zusammenhang stehen, musst Du Dich nicht kümmern. Es ist ausreichend, neben dem ExecStart ein ExecStop-Statement zu schreiben (also wieder den Beep) und in der Service-Section zusätzlich "RemainAfterExit=yes" einzutragen. Damit wird die Unit beim Stoppen aller Dienste (während shutdown/reboot) in umgekehrter Reihenfolge (zum Start) automatisch erneut mit dem ExecStop-Statement ausgeführt.... und es beep't.

DJKUhpisse Team-Icon

Supporter, Wikiteam
(Themenstarter)
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18273

So interpretiere ich das jetzt: shutdown-beep.service

[Unit]
Description=Shutdown-Beep

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/beep -f 2000

[Install]
WantedBy=multi-user.target

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

Ist unvollständig!

[Unit]
Description=Shutdown-Beep
After=basic.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/beep -f 2000
ExecStop=/usr/bin/beep -f 2000

[Install]
WantedBy=multi-user.target

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

@TomLu: warum die ExecStart Direktive? Die ist IMHO überflüssig.

Gruß, noisefloor

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

noisefloor schrieb:

@TomLu: warum die ExecStart Direktive? Die ist IMHO überflüssig.

DJKUhpisse schrieb:

Es geht darum, den Piepton-Befehl beim Runterfahren/Neustarten des Systems zu starten.

Und weil man keinen "Dienst" (der es hier sowieso nicht ist (was systemd aber hier nicht beachtet)) stoppen kann, der nicht zuvor gestartet wurde. Und wenn es sich nur um einen Beep beim Shutdown handelt, so wäre es dennoch ein ExecStart-Statement... nur eben mit anderen zeitlichen Direktiven.

Antworten |