shutdown: Skript vor sigterm ausführen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Theophil T.
Beiträge: 402
Registriert: 22.10.2006 20:24:59
Lizenz eigener Beiträge: MIT Lizenz

shutdown: Skript vor sigterm ausführen

Beitrag von Theophil T. » 26.08.2014 11:25:44

Hallo,

Anlaß ist, dass unter wheezy bei einem shutdown durch apcupsd (längerer Stromausfall) vorher eine virtuelle Maschine (Qemu) sauber herunter gefahren werden soll.
Im Prinzip kein Problem: entsprechenden Befehl in Unix-Socket schreiben fährt die VM herunter, ist getestet und geht. Auch eine Anpassung von apcupsd ist möglich (Skript vor shutdown ausführen), noch nicht getestet.

Darüber hinaus fände ich es aber besser, bei jedem shutdown, also nicht nur durch apcupsd, vorher die VM automatisch herunterzufahren.
Über die init-Skripte wird es nicht gehen, weil shutdown zuerst ein term-Signal an alle Prozesse sendet und dann erst init aufruft - dann ist die VM schon gekillt.

Wißt Ihr, ob ich irgendwo etwas anpassen kann, dass shutdown vor dem sigterm ein Skript ausführt?

Danke und viele Grüße
Theophil

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: shutdown: Skript vor sigterm ausführen

Beitrag von cronoik » 26.08.2014 19:11:12

Was mir einfällt wäre, dass du dir dein eigenes shutdown bastelst. Also dein Alias oder Knopf führt dein Skript aus und am Ende steht das shutdown -h now.
Hilf mit unser Wiki zu verbessern!

Theophil T.
Beiträge: 402
Registriert: 22.10.2006 20:24:59
Lizenz eigener Beiträge: MIT Lizenz

Re: shutdown: Skript vor sigterm ausführen

Beitrag von Theophil T. » 26.08.2014 22:03:18

Hallo cronoik,

ja, das könnte ich machen, dann hätte ich wohl ein shutdown mit dem Powerbutton nicht mit abgedeckt, aber das wäre zu verschmerzen.

Gruß Theophil

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: shutdown: Skript vor sigterm ausführen

Beitrag von rendegast » 27.08.2014 00:42:49

Du könntest Debianlibvirt zur Überwachung/Steuerung der Maschinen
einsetzen -> /etc/init.d/libvirt-guests

Debianlxc hat /etc/init.d/lxc zur Abschaltung der Container.
Mein Fix für /usr/bin/lxc-halt unter wheezy:

Code: Alles auswählen

--- lxc-halt_0  2013-12-16 12:31:13.000000000 +0100
+++ lxc-halt_fix        2014-08-07 19:07:42.000000000 +0200
@@ -54,7 +54,8 @@
 # FIXME: Assumption of /var/lib/lxc
 if [ -e /var/lib/lxc/${_CONTAINER}/rootfs ]
 then
-       chroot /var/lib/lxc/${_CONTAINER}/rootfs telinit 0
+       #chroot /var/lib/lxc/${_CONTAINER}/rootfs telinit 0
+       lxc-attach -n ${_CONTAINER} -e -- /sbin/telinit 0
 else
        echo "E: /var/lib/lxc/${_CONTAINER}/rootfs - no such directory"
        exit 1
(Ab jessie wohl/eventuell nicht mehr nötig)
EDIT Schießt mir aber auch mal das host-Netzwerk ab,
gelegentlich wird auch der Host selbst in einen Herunterfahren-Status gebracht.
Von einem Abschalten der lxc ohne einen Schutdown des Host halte ich mittlerweile wenig.

virtualbox hat /etc/init.d/vboxautostart-service.

Die singulären Lösungen können durch libvirt eingebunden resp. ersetzt sein.
Zuletzt geändert von rendegast am 27.08.2014 23:33:24, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Theophil T.
Beiträge: 402
Registriert: 22.10.2006 20:24:59
Lizenz eigener Beiträge: MIT Lizenz

Re: shutdown: Skript vor sigterm ausführen

Beitrag von Theophil T. » 27.08.2014 22:06:30

Hallo rendegast,

die genannten Programme/Fix würden also ein automatisches Herunterfahren der VM bei einem shutdown des Hostes beinhalten -
ich werde mir das mal näher anschauen.

Wie schon geschrieben geht das Herunterfahren einer VM unter Qemu per Skript auch recht gut:

Start der VM:

Code: Alles auswählen

user@host: qemu ...... -monitor unix:/Pfad/zum/Socket-Namen,server,nowait.......
Herunterfahren:

Code: Alles auswählen

user@host: echo "system_powerdown" | socat - UNIX-CONNECT:/Pfad/zum/Socket-Namen
siehe auch http://www.nico.schottelius.org/blog/co ... ix-socket/

Viele Grüße
Theophil

Antworten