So schließen Sie wicd gui, ohne den baumelnden Prozess zu verlassen

868
nullUser

Wenn ich die WICD-GUI mit öffne wicd-gtk &, kann das Schließen der GUI zwar geschlossen werden (sogar mit der Schaltfläche "Quit"), aber ein Prozess wicd-clientim Hintergrund läuft scheinbar nicht weiter. Das ist mir aufgefallen, weil ich meine laufenden Prozesse nach 20 Tagen Betriebszeit überprüft habe und nur etwa 15 wicd-clientSekunden aufgeführt habe. Zu Ihrer Information Ich betreibe Debian Jessie.

Wie kommt es, dass diese Prozesse nicht mit der GUI sterben und wie kann ich das beheben?

Ich habe bemerkt, dass wenn ich den Client starte, ohne ihn zu starten (dh einfach mit dem Befehl wicd-gtk), wenn ich die GUI schließe, das Terminal immer noch hängt, bis ich CTRL-C drücke. Beim Drücken von CTRL-C wird der wicd-clientProzess geschlossen.

1

3 Antworten auf die Frage

1
blanket_cat

Ich habe immer noch das gleiche Problem mit WICD. Das zugrunde liegende Problem besteht darin, dass beim Starten von wicd separate Prozesse gestartet werden, um das zu erledigen, was auch immer benötigt wird, um das zu arbeiten, was nicht Ihre Eingabe ist. Diese Prozesse interagieren, sind jedoch kein Prozess, die GUI ist ein Prozess, der Monitor ist ein Prozess, der Daemon ist auch sein eigener Prozess. Sie können unten sehen, dass nicht ein Programm im herkömmlichen Sinne gestartet wird, sondern drei oder vier Python-Skripts, die von separaten Python-Interpreten gestartet werden.

Wenn Sie ein Terminal öffnen top -c(mit der Befehlsoption show), werden folgende Prozesse ausgeführt:

/usr/bin/python -O /usr/share/wicd/daemon/monitor.py /usr/bin/python -O /usr/share/wicd/daemon/wicd-daemon.py /usr/bin/python -O /usr/share/wicd/gtk/wicd-client.py 

Jetzt habe ich ubuntu, eine Debian-Variante, aber der Prozess, der für mich funktioniert, sollte für Sie wahrscheinlich ohne oder mit nur wenigen Anpassungen funktionieren.

1. Holen Sie sich die Pids mit ps aux | grep wicd

2. laufen killund die Pids der Prozesse.

ODER

Wenn Sie keine anderen Python-Interpreter mit offenen Prozessen haben, können Sie sie mit auf einmal erhalten

kill $(pidof python) 
Danke @DavidPostill, ist Ihre Art zu sagen, dass meine Antwort falsch formatiert ist? blanket_cat vor 9 Jahren 0
Ha! okay danke. Ich bin es nicht gewohnt, dass die Leute im Internet super nett sind. blanket_cat vor 9 Jahren 0
Ich interessiere mich mehr für eine automatische Lösung. Ich möchte nicht daran denken, diese Prozesse jedes Mal beenden zu müssen, wenn ich wicd schließe. Ist das wirklich das Design, das die Autoren beabsichtigt hatten? nullUser vor 9 Jahren 1
Die beste Lösung, die ich mir vorstellen kann, besteht darin, etwas wie die while-Struktur zu nehmen, die in der Lösung beschrieben wird, und darauf zu warten, dass Ihr GUI stirbt, und dann eine Zeile hinzuzufügen, die das Skript anweist, die verbleibenden Prozesse abzubrechen, falls die GUI aktiv ist nicht mehr am Leben. http://stackoverflow.com/questions/1058047/wait-for-any-process-to-finish blanket_cat vor 9 Jahren 0
1
insignificant zebra

wicd-gtkhängt, wenn das Fenster geschlossen ist, es sei denn, es wird als aufgerufen ( wicd-gtk --no-trayoder wicd-client --no-trayohne wicd-cursesinstallierte wicd-clientAufrufe wicd-gtk).

Die schnelle Lösung ist setzen so etwas wie dies in Ihrer PATH oder Shell - Profil, das ersetzt wicd-gtkmit wicd-gtk --no-tray.

Für Benutzer, die den Client nicht im Hintergrund ausführen oder den gefürchteten wicd-cursesClient verwenden möchten, ist dies ohne die Befehlszeilenoption ärgerlich nicht konfigurierbar. wicd-client.pymüsste gepatcht werden. Der Patch könnte eine Überprüfung auf einen vorhandenen Prozess sein und dann ein mit diesem Prozess verbundenes GTK-Fenster aufrufen, anstatt zu starten.

-1
Lithopsian

Sie sagen nicht, ob Sie wicd-gtk oder wicd-curses ausführen? Es klingt wie GTK, da Sie "Knopf" erwähnen.

wicd-gtk ist ein einzelner Prozess (Python-Sitzung). Tut mir leid, Knotech, aber Sie sind einfach falsch. Es gibt Daemon- und Monitor-Prozesse, die jedoch immer ausgeführt werden sollen, und es ist äußerst unwahrscheinlich, dass es mehrere Kopien gibt, und sie werden nicht als Wicd-Client bezeichnet. Der Vollständigkeit halber kann der Daemon (und der Monitor) durch Ausführen von wicd-client gestartet werden. Dies geschieht jedoch nur, wenn sie noch nicht ausgeführt werden und erst, nachdem Sie Ihr gksudo-Kennwort eingegeben haben. Wenn Sie den Dämon beenden, werden Ihre Netzwerke nicht mehr verwaltet, sie werden nicht automatisch (erneut) verbunden, und Sie können ohne Verbindung bleiben.

Wicd-gtk startet also eines oder beide Fenster eines Fensters und eines Tray-Symbols. Wenn Sie nur wicd-gtk (oder wicd-client eingeben, mit dem der installierte wicd-Client-Typ ausgeführt wird) eingeben, sollten beide gestartet werden. wicd-gtk - tray startet nur das Fach, wicd-gtk --no-tray nur das Fenster. wicd-gtk - Nur Benachrichtigungen werden gestartet. Es wird lediglich ein Prozess gestartet, der zu Benachrichtigungsblasen führen kann, wenn Ihre Netzwerke verbunden oder getrennt sind.

Durch Drücken der Schaltfläche Beenden im Fenster wird das Fenster geschlossen. Das Taskleistensymbol wird nicht geschlossen. Wenn Sie also nur mit wicd-gtk (oder wicd-gtk - tray und später dem Fenster geöffnet) begonnen haben, wird ein Taskleistensymbol angezeigt. Dieses Verhalten wird als "in der Nähe des Ablagefachs" bezeichnet und ist sehr verbreitet, obwohl es für manche Menschen vielleicht angenehmer ist, wenn dies nicht konfiguriert werden kann. Wenn Sie mit wicd-gtk --no-tray begonnen haben, wird das Ganze geschlossen, wenn Sie auf die Schaltfläche Beenden klicken. Wenn Sie ein Taskleistensymbol haben (oder?), Können Sie das gesamte Objekt über das Kontextmenü des Taskleistensymbols schließen. Oder mit Strg-C, wo immer Sie angefangen haben.

Wenn Sie kein Taskleistensymbol haben und eines nicht möchten, beginnen Sie mit wicd-gtk --no-tray. Ihr Client wird dann geschlossen, wenn Sie auf die Schaltfläche Beenden klicken. Wenn Sie ein Taskleistensymbol haben möchten und das Ganze beim Drücken der Schaltfläche "Beenden" im Fenster verschwinden soll, haben Sie im Moment kein Glück.

"wicd-client" erzeugt "wicd-gtk" -Prozesse OHNE Aufforderung zur Erhöhung des "gksudo" in einigen Distributionen, wie Debian. Warum ist es "äußerst unwahrscheinlich", dass es mehrere Kopien von "wicd-gtk" gibt, wenn es mehrmals aufgerufen und geschlossen wird? Ab 1.7.2.4 scheint es nicht so zu sein, dass die Anwendung sich selbst oder vorhandene Prozesse beim Starten stoppt. Laut "man (8) wicd" sollte die Wiederverbindung von wicd-daemon.py erfolgen. insignificant zebra vor 8 Jahren 0