Raspbian Jessie: Shellscript beim Herunterfahren ausführen
Hi,
habe ein Raspberry Pi 2 mit Jessie am Laufen, das soll bestimmte Ordner per rsync auf einen angeschlossenen USB-Stick kopieren und danach ein Tar davon erstellen.
Das mit dem Script läuft auch alles super beim Ausführen. Mein Problem ist nur, dass das Ausführen beim Shutdown nicht funktionieren will, es scheint, als riefe er das Script gar nicht auf.
Ich habe Folgendes gemacht:
/etc/init.d/backup.sh angelegt, Dateiberechtigungen wie bei den anderen Dateien in diesem Ordner.
In /etc/rc0.d/K00backup.sh einen Symlink auf o.g. Datei erstellt, Berechtigungen des Symlinks OK.
Als es nicht ging, habe ich eine shebang-Line an den Anfang des Scripts eingefügt. Bin danach auf die Kommentarzeilen in den anderen Scripten in /etc/init.d aufmerksam geworden. Werden diese Zeilen tatsächlich benötigt oder gehören die nur "zum guten Ton"?
Habe auch schon als Präfix K01 ausprobiert, dasselbe Ergebnis.
Shutdown leite ich mit "shutdown -h now" ein.
Hat jemand eine Idee? Bitte verzeiht mir, falls ich mich evtl. schwammig ausdrücke, bin Linux-Neuling und hab bisher größtenteils Windows-Erfahrung. Das ist ein privates Lernprojekt von mir.
Schon mal vielen Dank vorab.
jiggi
habe ein Raspberry Pi 2 mit Jessie am Laufen, das soll bestimmte Ordner per rsync auf einen angeschlossenen USB-Stick kopieren und danach ein Tar davon erstellen.
Das mit dem Script läuft auch alles super beim Ausführen. Mein Problem ist nur, dass das Ausführen beim Shutdown nicht funktionieren will, es scheint, als riefe er das Script gar nicht auf.
Ich habe Folgendes gemacht:
/etc/init.d/backup.sh angelegt, Dateiberechtigungen wie bei den anderen Dateien in diesem Ordner.
In /etc/rc0.d/K00backup.sh einen Symlink auf o.g. Datei erstellt, Berechtigungen des Symlinks OK.
Als es nicht ging, habe ich eine shebang-Line an den Anfang des Scripts eingefügt. Bin danach auf die Kommentarzeilen in den anderen Scripten in /etc/init.d aufmerksam geworden. Werden diese Zeilen tatsächlich benötigt oder gehören die nur "zum guten Ton"?
Habe auch schon als Präfix K01 ausprobiert, dasselbe Ergebnis.
Shutdown leite ich mit "shutdown -h now" ein.
Hat jemand eine Idee? Bitte verzeiht mir, falls ich mich evtl. schwammig ausdrücke, bin Linux-Neuling und hab bisher größtenteils Windows-Erfahrung. Das ist ein privates Lernprojekt von mir.
Schon mal vielen Dank vorab.
jiggi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 312766
Url: https://administrator.de/contentid/312766
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Zitat von @jiggiwowow:
In /etc/rc0.d/K00backup.sh einen Symlink auf o.g. Datei erstellt, Berechtigungen des Symlinks OK.
In /etc/rc0.d/K00backup.sh einen Symlink auf o.g. Datei erstellt, Berechtigungen des Symlinks OK.
Wieso nur in rc0? das Killskript muß in die verzeichnisse it dem Runlevel, von dem aus die Kiste heruntergefahren wird, also z.B. 3 oder 5 (oder alle).
lks
Zitat von @jiggiwowow:
Bislang hatte ich es so verstanden, dass beim Wechsel zu rc0 nur die Skripte in rc0.d/ ausgeführt werden.
Bislang hatte ich es so verstanden, dass beim Wechsel zu rc0 nur die Skripte in rc0.d/ ausgeführt werden.
Die killskripte des runlevels, das verlassen wird und die startskripte des runlevels in das gewechselt wird.
lks
Moin,
zunächst: Ja, diese erste Zeile, ist mehr als nur ein bisschen guter Ton. Es ist die Information mit welchem Programm diese Datei gestartet wird. So wie unter Windows die Dateiendung. Denn die interessiert unter Linux niemanden. Ein Bashscript kann hier genauso .exe heißen, wie ein Textdokument, ohne dass es zu irgendwelchen Einschränkungen kommt.
Da du aber unter Debian/Raspbian Jessie unterwegs ist, könnte man auch, statt mit dem sich in ablöse befindlichen 'System V' zu qälen auch einfach mit systemd arbeiten, welches dir hier die meiste Arbeit abnimmt.
Dein Skript kannst du hier einfach irgendwo in deinem Filesystem ablegen und dann folgendes in `/etc/system/systemd/myscript.service` hinterlegen:
Jetzt noch testen: `systemctl start myscript.service`
Wenn es tut, was es soll, kannst du nun zu guter Letzt noch das ganze "scharf schalten".
Dazu machst du `systemctl enable myscript.service`
Fertig.
Nicht mehr, nicht weniger ;)
Zukunft kann manchmal so einfach sein :X
Gruß
Chris
zunächst: Ja, diese erste Zeile, ist mehr als nur ein bisschen guter Ton. Es ist die Information mit welchem Programm diese Datei gestartet wird. So wie unter Windows die Dateiendung. Denn die interessiert unter Linux niemanden. Ein Bashscript kann hier genauso .exe heißen, wie ein Textdokument, ohne dass es zu irgendwelchen Einschränkungen kommt.
Da du aber unter Debian/Raspbian Jessie unterwegs ist, könnte man auch, statt mit dem sich in ablöse befindlichen 'System V' zu qälen auch einfach mit systemd arbeiten, welches dir hier die meiste Arbeit abnimmt.
Dein Skript kannst du hier einfach irgendwo in deinem Filesystem ablegen und dann folgendes in `/etc/system/systemd/myscript.service` hinterlegen:
[Unit]
Description=My shutdown script
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
ExecStart=/path/to/script.sh
Type=oneshot
Jetzt noch testen: `systemctl start myscript.service`
Wenn es tut, was es soll, kannst du nun zu guter Letzt noch das ganze "scharf schalten".
Dazu machst du `systemctl enable myscript.service`
Fertig.
Nicht mehr, nicht weniger ;)
Zukunft kann manchmal so einfach sein :X
Gruß
Chris