Führen Sie das Skript vor dem Herunterfahren aus

21

Wenn ich meinen Computer herunterfahre, möchte ich einige ausstehende Aufgaben anzeigen, die ich ausführen muss, bevor ich das Büro verlasse. Ich habe eine lokale Anwendung ausgeführt, um diese Aufgaben zu verwalten. Im Grunde möchte ich nur einen Befehl ausführen und nach dem Beenden herunterfahren die app ausgeführt.

Juanefren
quelle
Kann
Sergiy Kolodyazhnyy

Antworten:

7

Sie können den Befehl /etc/gdm/PostSession/Defaultvor der exit 0Zeile in die Datei einfügen.

Popey
quelle
Wenn ich zur Option "Abmelden" gehe, wird sie ordnungsgemäß ausgeführt. Wenn ich jedoch auf "Herunterfahren" drücke, wird der fast augenblickliche lila Ubuntu-Abmeldebildschirm angezeigt und das Skript ausgeführt (auf dem Bildschirm wird das Ubuntu-Logo mit 5 kleinen Kugeln angezeigt). (getestet mit Schlaf 20).
Juanefren
Das Dialogfeld "Sind Sie sicher, dass Sie das System herunterfahren möchten" befindet sich hier: / usr / lib / indikatorsitzung / gtk-logout-helper und ein Teil des indikatorsitzungspakets, das in C / C ++ geschrieben ist bearbeiten. Vielleicht hast du mehr Glück, wenn du nach einer Gnome-Guru-Mailingliste fragst;)
LassePoulsen
6

Sie können dies tun, indem Sie ein Skript in /etc/rc0.d (zum Herunterfahren) und /etc/rc6.d (zum Neustart) erstellen. Führen Sie dazu Folgendes aus:

gksu gedit /etc/rc0.d/K01mycustomscript

Bearbeiten Sie Ihr Shutdown-Skript im Texteditor und führen Sie dann Folgendes aus:

sudo chmod +x /etc/rc0.d/K01mycustomscript

Und wenn Sie möchten, dass es beim Neustart ausgeführt wird, führen Sie Folgendes aus:

sudo cp /etc/rc0.d/K01mycustomscript /etc/rc6.d/K01mycustomscript

Quelle: dieser Forenthread

dv3500ea
quelle
Aus seiner Beschreibung geht hervor, dass er eine grafische App aufrufen möchte, sodass er Zugriff auf den xserver benötigt. In diesem Fall funktioniert die Verwendung von Init-Skripten nicht.
5.
1
Ja ... wie @ sepp2k sagt, läuft das Skript außerhalb von xserver :(
juanefren
4

Klingt für mich nach einer Frage für superuser.com. Wie auch immer, nach einigem Googeln habe ich herausgefunden, wie man ein Skript beim Abmelden ausführt. Hiermit wird das Skript zu $ ​​HOME / .bash_logout hinzugefügt.

Wenn das nicht funktioniert, füge hinzu

$HOME/.bash_logout

zu / etc / gdm / PostSession / Default, damit das Abmeldeskript ordnungsgemäß ausgeführt wird.

Da der Benutzer wie vor dem Herunterfahren ohnehin abgemeldet ist, sollte dies beide Grundlagen abdecken.

myusuf3
quelle
1
Da er wahrscheinlich nicht möchte, dass das Skript jedes Mal ausgeführt wird, dass er sich von bash abmeldet (dh jedes Mal, wenn er ein Terminalfenster schließt), halte ich es nicht für eine gute Idee, den Befehl in .bash_logout zu schreiben. Es scheint mir jedoch eine gute Idee zu sein, es in PostSession / Default zu schreiben.
SEPP2K
Habe
.bash_logout wird nicht ausgeführt, wenn Sie ein Terminal schließen. Es wird nur ausgeführt, wenn Sie sich von einer Terminal-Anmeldesitzung abmelden (dh wenn Sie sich von einem realTTY abmelden ) und nicht, wenn Sie sich von gnome abmelden.
LassePoulsen
Warum sollte dies eine Frage für den Superuser sein? Wenn die Frage über Ubuntu ist, ist es ein Thema.
NN
2

In ./app-to-run && sudo shutdown -h nowdiesem Fall sollte der Computer heruntergefahren werden, sobald die Ausführung der Anwendung abgeschlossen ist.

Tommy Brunn
quelle
1
Dies wäre eine sehr grobe Abschaltung. Sie möchten stattdessen lieber das Desktop-Shutdown-Skript aufrufen.
txwikinger
Das Sudo fordert den Benutzer möglicherweise auf, das Kennwort einzugeben, falls die auszuführende Anwendung lang genug ist. Es wird also niemals heruntergefahren.
Samb
1

Fast die gleiche Antwort wie bei Tommy Brunn, aber ohne das Risiko, nach dem root-Passwort gefragt zu werden:

sudo sh -c "./app-to-run; shutdown -h now"
samb
quelle