Ich möchte ein Skript ausführen, bevor ich mich von meiner GNOME-Sitzung abmelde, um mich zu warnen, wenn ich ein in den Computer eingestecktes Laufwerk vergessen habe.
Alle Lösungen, die ich gefunden habe, haben mir jedoch nicht gereicht:
Diese ähnliche Frage schlägt vor, die
/etc/gdm/PostSession/Default
Datei zu bearbeiten , aber ich habe nicht die Berechtigung, dies zu tun. (Und die Datei ist derzeit auf meinem Computer leer, sodass keine Hooks vorhanden sind, die ausgenutzt werden könnten.)Ich fand diesen Beitrag auch als Problemumgehung, aber laut der ersten Antwort funktioniert er nicht, wenn ich den Computer heruntergefahren habe, anstatt mich nur abzumelden.
Antworten:
Während Sie Gnome verwenden, können Sie das unten stehende Python-Skript verwenden, das an das von Ihnen erwähnte angepasst ist.
Es benötigt eine Gnome-Abmeldung (dh
gnome-session-quit
) (oder das Herunterfahren von Gnome), die erfolgt, wenn wir die Abmeldung in der GUI verwenden. AFAIK Kein Prozess kann ein Herunterfahren durch den Befehlsudo shutdown -h 0
oder durch blockierensudo poweroff
. Wennshutdown
es ausgeführt wird, gibt es SIGTERM an alle Prozesse und gibt ihnen ein paar Sekunden zum Beenden (nach dem Ausführen einiger Skripte, die nicht von Nicht-Root-Benutzern bearbeitet werden können). Wenn nicht beendet, werden Prozesse von SIGKILL gewaltsam beendet.Dies ist die schrittweise Vorgehensweise der
gnome_save_yourself
Methode. Lass uns einen Test machen.Speichern Sie den folgenden Code unter
~/Desktop/execute_script_on_shutdown.sh
(von http://www.linuxquestions.org/questions/linux-desktop-74/gnome-run-script-on-logout-724453/#post3560301 )Mach es ausführbar:
Speichern Sie Folgendes als
~/Desktop/shutdown_script.sh
Führen Sie das Hauptskript aus
Jetzt spürst du, wie das Drehbuch auf etwas wartet
Suchen Sie
AAAAAAAAAAAAAAAAAAAAAAAAAAA
auf Ihrem Desktop nach einer Datei mit dem Namen .Wenn Sie die Datei sehen, ist alles in Ordnung. Nun können Sie das bearbeiten
shutdown_script.sh
, um es an Ihre Bedürfnisse anzupassen. Denken Sie auch daran, denexecute_script_on_shutdown.sh
On-Login-Befehl auszuführen (oder ihn beim Start automatisch ausführbar zu machen).quelle
Wenn Sie möchten, dass Ihre Sitzung unter allen Umständen blockiert wird, benötigen Sie Root-Berechtigungen. Daran führt kein Weg vorbei. Benutzer root kann immer
kill -9
Ihre Prozesse. Ich bin überrascht, dass ein Herunterfahren nicht dazu führt, dass der Gnom das Signal "Rette dich selbst" ausgibt. Außerdem glaube ich, dass die "PostSession" -Skripte erst nach Beendigung der gnome-session und (glaube ich) kurz vor Beendigung des Xservers ausgeführt werden Ich habe recht).Was möglicherweise funktioniert, ist eine Gnome-Anwendung, die a) auf das Gnome-Ereignis "save-yourself" reagiert UND b) auf SIGTERM genauso reagiert, wie sie auf "safe-yourself" reagiert. Darüber hinaus können Sie wenig tun, insbesondere ohne Root-Rechte.
Sie können jedoch das Nicht-Root-Problem lösen: Schreiben Sie ein PostSession-Skript, das Ihre Anforderungen erfüllt, und empfehlen Sie es jemandem mit Root-Rechten, um es auf allen Computern bereitzustellen, da es ein sinnvolles Tool ist, das den Benutzern sehr hilft. Normalerweise werden die Leute mit Root-Rechten bezahlt, um die Benutzer glücklich zu machen / zu halten. :-)
Welches Problem möchten Sie lösen? Warum können Sie sich möglicherweise nicht von Ihrer Sitzung abmelden, wenn ein USB-Stick angeschlossen ist?
Sie können einen dbus-Client haben, auf dem "Vergessen Sie nicht, das Gerät abzuziehen!" Angezeigt wird. wenn gvfs das Abmelden eines Dateisystems auf einem USB-Gerät ankündigt. Aber ich weiß nicht, wie gut das funktioniert oder sogar Ihren Zwecken dient.
quelle
Ich habe es endlich geschafft, das Python-Skript zu testen, das ich als zweite Option in meiner Frage erwähnt habe. Es stellt sich heraus, dass dies auch funktioniert, wenn Sie aufgefordert werden, das System herunterzufahren, und nicht nur beim Neustart.
quelle