Skript ausführen bei Shutdown

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
jschulze
Beiträge: 17
Registriert: 24.03.2008 18:22:32

Skript ausführen bei Shutdown

Beitrag von jschulze » 09.09.2017 17:18:15

Wie kann ich ein Script ausführen, das noch ein vollständiges System vorfindet (also alle Server oben, Schreibzugriff etc.), um meine Backups zu machen.

Bei Debian 7 habe ich einfach die Datei nach /etc/init.d/custom-shutdown.sh geschrieben und einen Link in /etc/rc0.d/K04/backup_files.sh gesetzt und gut war.

Bei Debian 9 funktioniert das ja jetzt nicht mehr.

/usr/local/bin/backup_files.sh hat Ausführungsrechte, in dieser Datei stecken meine Backupbefehle

Code: Alles auswählen

sudo /usr/local/bin/backup_files.sh
funktioniert, wie es sollte, und läuft ca. 10 Sekunden.

Ich habe jetzt einen Service angelegt.

Code: Alles auswählen

sudo nano /lib/systemd/system/mybackup.service
[Unit]
Description=Mein Backup Service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/backup_files.sh

[Install]
und diesen aktiviert mit

Code: Alles auswählen

sudo systemctl enable mybackup

Code: Alles auswählen

systemctl status mybackup.service
Loaded: loaded (/lib/systemd/system/mybackup.service; enabled; vendor preset:
Active: active (exited) since Sat 2017-09-09 16:58:36 CEST; 13min ago
Process: 6265 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 6265 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/mybackup.service
Da dort "active" steht, gehe ich mal davon aus, dass der Service zumindest irgendwie in Ordnung ist.

Nur leider läuft das Skript nicht. Weder beim Starten noch beim Herunterfahren.

Ich durchforste nun seit Stunden das Internet und bisher hat keiner für diese an sich sehr einfache Anforderungen eine Lösung präsentiert, die funktioniert.

scientific
Beiträge: 2999
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Skript ausführen bei Shutdown

Beitrag von scientific » 09.09.2017 19:35:20

Der install-Section fehlt ein WantedBy= Eintrag.
Die Sicherung willst du machen, wenn noch alle Server laufen?
Wärs nicht besser, die Server runterzufahren, amit nicht noch was geschrieben wird, während oder nach dem Backup-Run?

Außerdem fehlen dir die Abhängigkeiten.

Probier mal in [Unit] noch

Code: Alles auswählen

After=basic.target
Before=shutdown.target
einzufügen.

Und in der [Install] - Section

Code: Alles auswählen

 WantedBy=shutdown.target
einzufügen.

Wenn das basic.target tatsächlich zu spät ist, dann ersetze die

Code: Alles auswählen

 After=basic.target 
- Zeile durch

Code: Alles auswählen

 After=multi-user.target


Lg scientific

Außerdem wär für eine korrekte Unit das backup-Skript auch noch interessant...
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

jschulze
Beiträge: 17
Registriert: 24.03.2008 18:22:32

Re: Skript ausführen bei Shutdown

Beitrag von jschulze » 10.09.2017 09:47:50

Erstmal vielen Dank, dass Du dir die Mühe gemacht hast, mir zu antworten. Ich weiß das wirklich zu schätzen.

Aber leider funktioniert es wieder nicht.
[Unit]
Description=Mein Backup Service
After=basic.target
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/backup_files.sh

[Install]
WantedBy=shutdown.target
und ein anschließendes

Code: Alles auswählen

sudo systemctl enable mybackup
systemctl status mybackup.service
liefert nur
Created symlink /etc/systemd/system/shutdown.target.wants/mybackup.service -> /lib/systemd/system/mybackup.service.

Loaded: loaded (/lib/systemd/system/mybackup.service; enabled; vendor preset:
Active: inactive (dead)
Selbst wenn ich das Teil dann mit Webmin (den Linux-Befehl kenne ich nicht) zum Laufen bringe, funktioniert es nicht.

Ich bin gerade wieder sowas von angenervt, dass es offensichtlich niemanden auf diesem Planeten gibt, der mir das einfach sagen kann. Alle, wirklich alle Beiträge versanden im Nirvana. Keiner liefert Tutorial ab, das einfach funktioniert. Nicht einmal ein simples touch, um zu gucken, ob das Script überhaupt auch nur gestartet wird, scheint nirgends zu funktionieren.

Meine Anforderungen sind nicht besonders, wenn auch etwas speziell. Ich entwickle auf Windows 7 64, Debian läuft bei mir als virtuelle Maschine. Das klappt auch alles wunderbar. Jeden Abend fahre ich die virtuelle Maschine herunter und meine Datenbank und meine wichtigsten Ordner werden automatisch auf dem Host (über eingebundene Laufwerke) gesichert. Das hatte ich unter Debian 7 wunderbar zum Laufen bekommen. Daher schrieb ich auch "die Server sollen alle oben sein".

Im Sicherungsskript wird nur ein Perlskript aufgerufen, das meinen Ordner in ein gezipptes TAR-File kopiert, und ein zweites Perl-Skript, dass alle meine Datenbanken per dump abzieht.

Da ich der einzige bin, der auf die virtuelle Maschine zugreift und die Datenbanken nicht groß sind, dauert das backup händisch gestartet nur maximal 10 Sekunden.

Also, eigentlich keine hohen Anforderungen. Eigentlich.

Ich bin kein Unix-Mensch und habe wichtigeres zu tun, als mich bei so einer Allerweltsaufgabe noch mal mit Lernstoff belasten zu müssen.

Wenn ich es mit deiner Hilfe nicht packe, werde ich zu Devuan wechseln.

scientific
Beiträge: 2999
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Skript ausführen bei Shutdown

Beitrag von scientific » 10.09.2017 11:17:44

Du hast jetzt ein paar Trigger losgelassen...

1) ich will keinen Lernaudwand betreiben
2) wenn Debian mit systemd so kompliziert ist, dann wechsle ich zu Devuan
3) gibts nicht irgendwo ein Tutorial, dass ich nur nachklicken muss?
4) Ich bin Windows-Entwickler und will mich mit Unix nicht auseinandersetzen
5) Ich bin genervt von dem, was nicht funktioniert, womit ich mich nicht eingehender auseinandersetzen möchte

Ich hab jetzt mehrere Antwortmöglichkeiten:
A) Dann bleib besser bei Windows
B) Dann wechsle doch zu Devuan, dann ist hier danach das falsche Forum
C) Ein wenig in die nicht komplizierten Grundlagen von systemd einarbeiten ist notwendig, um den bedienen zu können. Willst du das lernen? Dann zeig ich dir gerne, welche Befehle uns zum Debugging weiterbringen.

Such dir eine Antwort aus. Dementsprechend gehts weiter. Ich bin gerne bereit, Neulingen die Vorzüge von systemd näherzubringen, bin aber nicht bereit, lernunwilligen meine Freizeit zu opfern.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 2999
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Skript ausführen bei Shutdown

Beitrag von scientific » 10.09.2017 11:34:31

Btw... Deine Start- und Stop-Execs sind nicht korrekt. Da hab ich zu wenig drauf geachtet.
Und ich hab noch eine Unit beim Googeln am Weg von der Ubahn zum Fitnesscenter (Wegzeit=3 Minuten) im Gehen gefunden...

https://ubuntuforums.org/showthread.php?t=2280396

Aus diesem Thread https://ubuntuforums.org/showthread.php?t=2280396

Man findet schon etwas... Wenn man sucht. Und ob dein Skript jetzt die richtige Lösung ist, wage ich zu bezweifeln. Denn das Skript kann man in einzelne Units aufdröseln, die zum jeweilugen Mount bzw. Service eine Abhängigkeit haben, und so sicher ausgeführt werden. Ich gab dich um das Skript gebeten, du hast es nicht gebrachr, so wie du auch keine Logs oder Fehlermeldungen gebracht hast (und auch nicht danach gefragt hast, wie man sowas kriegt).

Diese Logs kriegt man ganz einfach. Aber Windows-Entwickler kennen das halt nicht... Und mit Windows-Wissen kommst in Linux halt nicht recht weit. Vor allem, wenn du dich nicht mit Lernen noch zusätzlich "belasten" willst...

Das wars jetzt aber von meiner Seite.
Wähle eine von meinen 3 vorgeschlagenen Antwortmöglichkeiten, oder schlag mir eine bessere vor.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

jschulze
Beiträge: 17
Registriert: 24.03.2008 18:22:32

Re: Skript ausführen bei Shutdown

Beitrag von jschulze » 10.09.2017 15:27:29

Interessanter Ansatz.

Meine Scripte nicht kennen, aber erstmal behaupten, dass darin der Fehler liegt.

Und als Krönung, die versteckte Beleidigung.

Ist das eine Taktik? Tipps geben, die nicht taugen und sich dann als der große Kenner und Retter aufspielen?

Dass du nicht in der Lage warst, eine simple Lösung auf ein simples Problem zu präsentieren, das noch in Debian 7 kein Problem war, zeigt doch nur zweierlei:

1. du hast keine Ahnung und

2. Debian 9 und systemd ist unausgereift.

scientific
Beiträge: 2999
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Skript ausführen bei Shutdown

Beitrag von scientific » 10.09.2017 15:39:45

Die Exec-Zeilen in der Unit sind falsch. Dein Skript hast du bis jetzt nicht geschafft zu posten, obwohl ich dich zweimal darum gebeten habe.

Die Aufgabe IST einfach. Aber ich kau sie dir nicht vor. Ein wenig Eigeninitiative ist erforderlich. Die hast du aber vorab eh schon für dich ausgeschlossen. Daher...

Weißt was... Ich wähle für dich.
Antwort A) und B)

Tschüß

//Edit: Inhalt ergänzt
Zuletzt geändert von scientific am 10.09.2017 15:39:45, insgesamt 1-mal geändert.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

cosmac
Beiträge: 4562
Registriert: 28.03.2005 22:24:30

Re: Skript ausführen bei Shutdown

Beitrag von cosmac » 10.09.2017 15:55:41

jschulze hat geschrieben: ↑ zum Beitrag ↑
10.09.2017 15:27:29
Debian 9 und systemd ist unausgereift.
Debian 9 funktioniert grundsätzlich auch mit dem init-System von Debian 7. Dein ursprüngliches Init-Script müsste damit unverändert laufen. Die Einschränkung: Gnome und manche Desktop-Programme funktionieren nicht und würden bei der Umstellung deinstalliert werden. Es gibt aber Dateimanger, Browser, E-Mail-Programe usw. die auch ohne systemd funktionieren. Wenn du keine integrierte Desktop-Umgebung brauchst, wäre das eine Alternative zu Devuan.
Beware of programmers who carry screwdrivers.

Antworten