ubuntuusers.de

Start/Stop Script

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Nexus1

(Themenstarter)

Anmeldungsdatum:
17. September 2022

Beiträge: 34

lubux schrieb:

BTW: Wenn ich in Beispielen die spitzen Klammern <> benutze, solltest Du wissen was das bedeutet. Du hast weiter oben schon den Fehler mit <enp2s0>, gemacht.

Also das ist klar:

Description=<Beschreibung ...>

Und das auch:

ExecStart=/<Pfad>/<zum>/<ausführbaren-Script>

Aber wie soll ich das interpretieren?

sys-subsystem-net-devices-<wan-Interface>.device

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

Nexus1 schrieb:

Also das ist klar: Description=<Beschreibung ...>

Und das auch: ExecStart=/<Pfad>/<zum>/<ausführbaren-Script>

Ich weiß nicht ob das bei dir klar ist, aber wir werden es ja sehen.

Nexus1 schrieb:

Aber wie soll ich das interpretieren? sys-subsystem-net-devices-<wan-Interface>.device

Na z. B. so:

sys-subsystem-net-devices-enp2s0.device

EDIT:

Siehe z. B. die Ausgabe von:

systemctl list-units --type=device | grep -i enp2s0

Nexus1

(Themenstarter)

Anmeldungsdatum:
17. September 2022

Beiträge: 34

lubux schrieb:

Na z. B. so:

sys-subsystem-net-devices-enp2s0.device

Ja du hast recht, hab vergessen die Klammern zu löschen. ☹

So inzwischen hab ich 2 Dateien installiert

stopmail.service in /etc/systemd/system:

[Unit]
Description=Sends eMail on shutdown
DefaultDependencies=no
Before=shutdown.target reboot.target

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/system-shutdown/stopmail.shutdown
TimeoutStartSec=0

[Install]
WantedBy=shutdown.target reboot.target

stopmail.shutdown in /usr/lib/systemd/system-shutdown:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/sh
### BEGIN INIT INFO
# Provides:          stopmail
# Required-Start:    $network-online
# Required-Stop:
# Default-Start:     1 2 3 4 5 6
# Default-Stop:      0
# Short-Description: Send eMail on shutdown
# Description
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

echo "Subject: Message from Server\n\nServer is shutting down" | msmtp xxx@web.de
date +"%Y-%m-%d %H:%M:%S   Stop" >> /var/log/stopmail.log
return 0

Dann hab ich das Script mit "chmod +x stopmail.shutdown" ausführbar gemacht und den Service mit "sudo systemctl enable stopmail.service" aktiviert.

Leider kommt noch keine eMail, das könnte aber damit zusammenhängen dass ich die nötigen Werte für folgende Felder im Script nicht kenne:

1
2
3
4
# Required-Start:    $network-online
# Required-Stop:
# Default-Start:     1 2 3 4 5 6
# Default-Stop:      0

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

Nexus1 schrieb:

So inzwischen hab ich 2 Dateien installiert

stopmail.shutdown in /usr/lib/systemd/system-shutdown:

Warum 2 Dateien gleichzeitig? ... und leider hast Du das mit dem Verzeichnis "/usr/lib/systemd/system-shutdown" (noch) nicht verstanden.

Wenn Du das Verzeichnis "/usr/lib/systemd/system-shutdown" benutzt, brauchst Du kein Start-Stop-Script dort drin und auch keine service-unit mit diesem Verzeichnis. Das einzige was Du im Verzeichnis "/usr/lib/systemd/system-shutdown" brauchst, ist ein einfaches funktionierendes ausführbares shell-Script (mit shebang). Und mit diesem Script erst in der Console testen und wenn das funktioniert, dann mit bzw. aus diesem Verzeichnis testen (in beiden Fällen: reboot und shutdown mit poweroff).

Ob es funktioniert hängt davon ab, welche Ressourcen/Dienste zu dem Zeitpunkt, noch zur Verfügung stehen. Ich kann z. B. damit noch ein Ping ins Subnetz erfolgreich machen, kann aber nicht, eine leere Datei auf dem Datenträger erstellen lassen, weil die Partition evtl. schon ausgehängt ist.

EDIT:

BTW: Das Verzeichnis "/usr/lib/systemd/system-shutdown" ist vergleichbar mit der /etc/rc.local"-Datei, nur dass es nicht beim booten sondern beim runterfahren wirksam ist (oder sein soll). In FreeBSD gibt es z. B. neben der /etc/rc.local, auch die /etc/rc.final (... zum ausführen beim runterfahren).

EDIT 2:

Nexus1 schrieb:

Leider kommt noch keine eMail, das könnte aber damit zusammenhängen dass ich die nötigen Werte für folgende Felder im Script nicht kenne:

Für die Lösung mit _eigener nativer_ service-unit, brauchst Du kein Start-Stop-Script. Nur zur Info: Für die "virtual facilities", siehe: https://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/facilname.html

https://wiki.debian.org/LSBInitScripts/DebianVirtualFacilities

https://wiki.debian.org/LSBInitScripts

Nexus1

(Themenstarter)

Anmeldungsdatum:
17. September 2022

Beiträge: 34

Ich darf Erfolg vermelden. Mit dem Shutdown-Ordner hats zwar nicht funktioniert, dafür mit den Units.

lubux wenn ich dich irgendwie upvoten könnte, würd ich das machen aber ich finde keine Option dafür.

Nexus1

(Themenstarter)

Anmeldungsdatum:
17. September 2022

Beiträge: 34

Vielen Dank 😀

Antworten |