GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie führe ich ein Skript mit Systemd direkt vor dem Herunterfahren aus?

Was muss ich in [install] eingeben Abschnitt, sodass systemd /home/me/so.pl ausführt direkt vor dem Herunterfahren und auch vor /proc/self/net/dev wird zerstört?

[Unit]
Description=Log Traffic

[Service]
ExecStart=/home/me/so.pl

[Install]
?

Akzeptierte Antwort:

Die vorgeschlagene Lösung besteht darin, die Service-Unit als normalen Dienst auszuführen – siehe [Install] Sektion. Also muss alles umgekehrt gedacht werden, auch Abhängigkeiten. Denn die Abschaltreihenfolge ist die umgekehrte Startreihenfolge. Deshalb muss das Skript in ExecStop= platziert werden .

Die folgende Lösung funktioniert bei mir:

[Unit]
Description=...

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=<your script/program>

[Install]
WantedBy=multi-user.target

RemainAfterExit=true wird benötigt, wenn Sie kein ExecStart haben Aktion.

Stellen Sie nach dem Erstellen der Datei sicher, dass systemctl daemon-reload ausgeführt wird und systemctl enable yourservice --now .

Ich habe es gerade von systemd IRC bekommen, Credits gehen an mezcalero.


Linux
  1. Wie führe ich Linux-Bash-Befehle in einem PERL-Skript aus?

  2. So fügen Sie Shebang # hinzu! mit PHP-Skript unter Linux?

  3. Wie führe ich ein Skript im Hintergrund aus (Linux OpenWRT)?

  4. Wie führe ich einen Teil eines Skripts mit eingeschränkten Rechten aus?

  5. Wie führe ich ein Skript mit systemd kurz vor dem Herunterfahren aus?

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Windows-Software unter Linux mit Flaschen aus

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

So führen Sie Pods als systemd-Dienste mit Podman aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So führen Sie einen Alias ​​mit Sudo in Linux aus