staging.inyokaproject.org

Frage zu Start-Stop-Skript

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Gerdchen03

Anmeldungsdatum:
25. Februar 2011

Beiträge: 97

Hallo,

ich möchte ein Skript ausführen, wenn das Gerät ausgeschaltet wird. Es handelt sich um ein Opensource Navi (https://github.com/Openvario/meta-openvario). Das Skript soll runtime-Werte in eine Config speichern. Führe ich das Skript mit "sh store-runtime.sh stop" aus, tut es seine Arbeit wie gewünscht. Das Skript ist ausführbar und liegt in /etc/init.d. Ein Link ist entsprechend angelegt worden: /etc/rc5.d/K90store-runtime.sh

Fahre ich den Rechner mit shutdown -h now oder reboot runter, wird nichts gespeichert. Was mache ich falsch??

Kätzchen

Avatar von Kätzchen

Anmeldungsdatum:
1. Mai 2011

Beiträge: 6036

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Gerdchen03 schrieb:

Ein Link ist entsprechend angelegt worden: /etc/rc5.d/K90store-runtime.sh

Der ist bei Distributionen, die Systemd als Init-System nutzen nicht relevant - Systemd erstellt dynamisch Systemd-Units für SysV-Init Skripte, wobei es einiges zu beachten gibt: https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities/ - schon allein die Endung .sh dürfte da störend wirken. Außerdem muss das Skript ausführbar sein.

Fahre ich den Rechner mit shutdown -h now oder reboot runter, wird nichts gespeichert. Was mache ich falsch??

Du musst die Unit vermutlich noch aktivieren (systemctl enable store-runtime.service).

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 611

Was mache ich falsch??

Sehr häufig ist eine Environment Variable (z.B. PATH) nicht korrekt gesetzt. Der interaktive User hat in der Regel z.B. einen anderen PATH als der root User, der das /etc/init.d Script ausführt.

Gerdchen03

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 97

Danke für eure Hilfe!! Ich habe es nun mit systemd hinbekommen. Meine .service-Datei sieht wie folgt aus und funktioniert auch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=Store runtime values at Config
After=basic.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/opt/bin/store-runtime-value.sh stop

[Install]
WantedBy=multi-user.target

Ist dies so OK, oder gibt es aus eurer Sicht Verbesserungen?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 13293

Gerdchen03 schrieb:

[Unit]
Description=Store runtime values at Config
After=basic.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/opt/bin/store-runtime-value.sh stop

[Install]
WantedBy=multi-user.target

Ist dies so OK, ...

Hast Du die service-unit nicht getestet? Evtl. noch in der [Unit]-Section, die Zeile:

Before=shutdown.target

hinzufügen,
Alternativ kannst Du auch mit einer inaktiven (aber aktivierten)

Loaded: loaded ...
Active: inactive (dead)

service-unit probieren:

[Unit]
Description=Store runtime values at Config
ConditionPathExists=/opt/bin/store-runtime-value.sh
DefaultDependencies=no
Before=umount.target

[Service]
Type=oneshot
# User=
# WorkingDirectory=/opt/bin
ExecStart=/bin/sh -c '/opt/bin/store-runtime-value.sh stop'

[Install]
WantedBy=reboot.target halt.target poweroff.target
Antworten |