Warum wird gksudo nicht beendet, nachdem der Hintergrundprozess gestartet wurde?

994
vava

Ich versuche, mit Gksudo konfrontiert zu werden (um unter allen Prozessen, nicht nur bei mir oben zu sein), aber ich habe ein wirklich seltsames Problem. Trotz der Tatsache, dass sich conky sich selbst gab und sofort abbricht, wird Gksudo nicht zur gleichen Zeit verlassen. Wenn ich es mit Strg + C schließe, läuft conky weiter, was beweist, dass es sich erfolgreich verzogen hat. Wie kann ich Gksudo erkennen lassen, dass der Prozess, den es gestartet hat, beendet ist, und mir meine Shell zurückgeben?

0

2 Antworten auf die Frage

2
nagul

Wenn sich conky selbst ausgibt und beendet wird, bleibt der übergeordnete Prozess, den gksudo erstellt hat, als Zombie-Prozess erhalten .

Auf Unix- und Unix-ähnlichen Computerbetriebssystemen ist ein Zombie-Prozess oder ein nicht mehr vorhandener Prozess ein Prozess, dessen Ausführung zwar abgeschlossen ist, aber immer noch einen Eintrag in der Prozesstabelle enthält. Dieser Eintrag ist immer noch erforderlich, damit der Prozess, der den Prozess (jetzt Zombie) gestartet hat, den Exitstatus lesen kann. Der Begriff Zombie-Prozess leitet sich von der gängigen Definition von Zombie ab - einer untoten Person. In der farbenfrohen Metapher des Begriffs ist der Kindprozess gestorben, wurde aber noch nicht geerntet.

Solange dieser Prozess vorhanden ist, läuft gksudo weiter. Aus seiner Manpage:

Bei erfolgreicher Ausführung eines Programms ist der Rückgabewert von sudo einfach der Rückgabewert des ausgeführten Programms.

Wenn Sie dies interaktiv ausführen, führen Sie es wie empfohlen im Hintergrund aus. Wenn Sie es nicht interaktiv verwenden möchten, geben Sie root-Berechtigung für conky oder das Wrapper-Skript über die Datei / etc / sudoers ein .

Bearbeiten: Verwenden Sie das gvim-Beispiel in der anderen Antwort:

$ #gksudo running $ ps -ef | grep gvim 171:nagul 22876 9378 0 12:18 pts/1 00:00:00 gksudo gvim 172:root 22877 22876 0 12:18 ? 00:00:00 [gvim] <defunct> 176:root 22892 1 0 12:18 ? 00:00:00 gvim  $ #gksudo killed via Ctrl-C $ ps -ef | grep gvim 174:root 22892 1 0 12:18 ? 00:00:00 gvim 
0
innaM

Es scheint mir, dass Gksudo das nie tut. Zum Beispiel gibt gvim beim Starten eine funktionierende Shell zurück. Wenn Sie es jedoch mit gksudo starten, wird die Hülle blockiert.

Am einfachsten können Sie es im Hintergrund ausführen:

gksudo conky & 
Das geht nicht. @nagul hat wahrscheinlich recht und es wartet nur auf Exit-Code. vava vor 14 Jahren 0
Seltsam. Für mich geht das. innaM vor 14 Jahren 0