Hej zusammen,
ich benutze systemd-networkd um mein Netzwerk zu verwalten.
Mein Ziel ist, sobald der Server heruntergefahren oder neu gestartet wird, zuerst noch ein Skript läuft. Welche Möglichkeiten bieten sich da an? Eine eigene Service-Unit wäre mir am liebsten, allerdings weiß ich da nicht, wie die einzelnen Sektionen sollten.
LG // neph
Script starten @reboot/shutdown
Re: Script starten @reboot/shutdown
Das ist problemlos möglich.... aber dazu bedarf es Festlegungen....
Schau Dir mit einem Pict-Viewer die Ausgabe von
an, um festzulegen, wo Dein Script sich "einreihen" soll. Dann schau Dir darüber hinaus die gegebenen Targets mit
an, um festzulegen, ob Dein Script möglicherweise zwingend nach einem Target oder zwingend vor einem Target gestartet werden soll.... dabei gehts um erfüllte Abhängigkeiten.
Die folgenden Targets werden wohl die im Regelfall relevanten Targets sein:
Ohne die Abhängigkeiten Deines Scripts zu kennen, bzw. wann es den Job frühestens oder ggf. spätestens erledigen soll/darf/kann/muss, kann Dir Deine Frage keiner beantworten.
https://www.freedesktop.org/software/sy ... ecial.html
Schau Dir mit einem Pict-Viewer die Ausgabe von
Code: Alles auswählen
systemd-analyze plot >~/bootplot.svg
Code: Alles auswählen
systemctl list-units --type target
Die folgenden Targets werden wohl die im Regelfall relevanten Targets sein:
Code: Alles auswählen
basic.target loaded active active Basic System
graphical.target loaded active active Graphical Interface
local-fs.target loaded active active Local File Systems
remote-fs.target loaded active active Remote File Systems
network.target loaded active active Network
multi-user.target loaded active active Multi-User System
https://www.freedesktop.org/software/sy ... ecial.html
Re: Script starten @reboot/shutdown
Hallo Thomas,
ich habe mich missverständlich ausgedrückt. Entschuldigung.
Mir geht es nur um den Prozess des Herunterfahrens. Den Startup habe ich auch dank Deines network_wait_online.service & - script bereits problemlos am Laufen. Mein Wunsch ist es jetzt, ein Script beim Herunterfahren laufen zu lassen. Ich hatte gehofft, dass auch mit systemd-analyze analysieren zu können. Weil ich nicht wusste, wie das gelingen kann, habe ich etwas im Netz gesucht und herausgefunden, dass das dafür nicht geeignet sei. Nun stehe ich da und weiß nicht so recht, wie ich das bewerkstelligen kann.
Ich möchte nur, dass wenn ich shutdown -h now oder reboot eingebe, einfach am Anfang dieses Prozesses ein Script angestoßen wird. Das Script soll noch eine Datei schreiben, die beim Start des Servers wichtig wird.
LG // neph
ich habe mich missverständlich ausgedrückt. Entschuldigung.
Mir geht es nur um den Prozess des Herunterfahrens. Den Startup habe ich auch dank Deines network_wait_online.service & - script bereits problemlos am Laufen. Mein Wunsch ist es jetzt, ein Script beim Herunterfahren laufen zu lassen. Ich hatte gehofft, dass auch mit systemd-analyze analysieren zu können. Weil ich nicht wusste, wie das gelingen kann, habe ich etwas im Netz gesucht und herausgefunden, dass das dafür nicht geeignet sei. Nun stehe ich da und weiß nicht so recht, wie ich das bewerkstelligen kann.
Ich möchte nur, dass wenn ich shutdown -h now oder reboot eingebe, einfach am Anfang dieses Prozesses ein Script angestoßen wird. Das Script soll noch eine Datei schreiben, die beim Start des Servers wichtig wird.
LG // neph
Re: Script starten @reboot/shutdown
Das ist relativ einfach. Hier ein kleines Testszenario, mit dem Du prüfen kannst, obs das tut, was Du möchtest:nephilim hat geschrieben:Ich möchte nur, dass wenn ich shutdown -h now oder reboot eingebe, einfach am Anfang dieses Prozesses ein Script angestoßen wird. Das Script soll noch eine Datei schreiben, die beim Start des Servers wichtig wird.
Code: Alles auswählen
nano /usr/local/bin/create-journal-entry
Code: Alles auswählen
#!/bin/bash
echo "User=$USER, Parm1=$1 Parm2=$2 Parm3=$3" | systemd-cat -t "thlu:`basename $0`" -p info
exit 0
Und hier eine Beispiel-Service-Unit, die das obige Script beim Runterfahren des Systems aufruft:
Code: Alles auswählen
nano /etc/systemd/system/start-before-shutdown.service
Code: Alles auswählen
[Unit]
Description=thlu:start-before-shutdown.service: Start at shutdown, reboot, halt
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/create-journal-entry "started from before-shutdown.service (shutdown/reboot/halt" "active/running"
[Install]
RequiredBy=shutdown.target reboot.target halt.target
Im ersten starten:
Code: Alles auswählen
journalctl -f
Code: Alles auswählen
/usr/local/bin/create-journal-entry "manuell gestartet von mir selber" "active/running"
Code: Alles auswählen
cd /etc/systemd/system
systemctl enable start-before-shutdown.service
systemctl reboot
Code: Alles auswählen
journalctl -b -1 | grep thlu
Code: Alles auswählen
journalctl -b -1
Hth.