Как закрыть wicd gui, не выходя из висящего процесса

Если я открою графический интерфейс с wicd-gtk &его закрытие (даже с помощью кнопки "Выйти") может закрыть графический интерфейс, но всегда оставляет процесс wicd-client работает в фоновом режиме, видимо, ничего не делая. Я заметил это, потому что я проверил свои запущенные процессы после 20 дней безотказной работы, чтобы найти около 15 wicd-clientв списке. К вашему сведению, я работаю с Debian, Джесси.

Почему эти процессы не умирают с графическим интерфейсом и как я могу это исправить?

Я заметил, что если я запускаю клиента без фона (то есть просто с помощью команды wicd-gtk) когда я закрываю графический интерфейс, терминал все еще зависает, пока я не нажму CTRL-C. После нажатия CTRL-C, wicd-client процесс закрывается.

3 ответа

Решение

wicd-gtk зависает, когда его окно закрыто, если оно не вызвано как wicd-gtk --no-tray или же wicd-client --no-tray (без wicd-curses установлены, wicd-client Запускает wicd-gtk).

Быстрое решение состоит в том, чтобы поместить что-то подобное в ваш PATH или профиль оболочки, который заменяет wicd-gtk с wicd-gtk --no-tray,

Для пользователей, которые не хотят запускать клиент в фоновом режиме или использовать страх wicd-curses клиент, это досадно не настраивается без параметра командной строки; wicd-client.py нужно будет залатать. Патч может быть проверкой существующего процесса, а затем вызывать окно GTK, присоединенное к этому процессу, вместо запуска.

У меня все та же проблема с WICD. Основная проблема заключается в том, что когда вы запускаете wicd, он запускает отдельные процессы для обработки того, что ему нужно для обработки, но это не ваш ввод. Эти процессы взаимодействуют, но не являются одним процессом, графический интерфейс - это один процесс, монитор - это один процесс, демон - это также его собственный процесс. Ниже вы можете увидеть, что это не одна программа, запускаемая в традиционном смысле, а три или четыре скрипта python, запускаемые отдельными интерпретаторами python.

Если вы откроете терминал, проверьте его с помощью top -c (опция команды show) вы найдете следующие процессы:

/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

Сейчас я работаю с Ubuntu, который является вариантом Debian, но процесс, который работает для меня, вероятно, должен работать для вас без каких-либо изменений.

Во-первых, получить пидс с ps aux | grep wicd

2-й бег kill и пидс процессов.

ИЛИ ЖЕ

если у вас нет других открытых интерпретаторов Python, вы можете получить их все сразу

kill $(pidof python)

Вы не говорите, используете ли вы wicd-gtk или wicd-curses? Это звучит как GTK, так как вы упомянули "кнопку".

wicd-gtk - это отдельный процесс (сессия Python). Извините за knotech, но вы просто не правы. Существуют процессы демона и монитора, но предполагается, что они будут работать постоянно, и крайне маловероятно, что будет несколько копий, и они не будут называться wicd-клиентом. Просто для полноты, демон (и монитор) можно запустить, запустив wicd-client, но это произойдет, только если они еще не запущены, и только после того, как вы введете свой пароль gksudo. Если вы убьете демона, ваши сети больше не будут управляться, они не будут автоматически (повторно) подключаться, и вы можете остаться без подключения.

Таким образом, wicd-gtk запускает один или оба, или ни один, окна и иконки в трее. Ввод просто wicd-gtk (или ввод wicd-client, который будет запускать установленный вами тип wicd-клиента) должен запустить оба варианта. wicd-gtk --tray запустит только трей, wicd-gtk --no-tray только окно. wicd-gtk --only-notifications не запустится ни одним, просто порождая процесс, который может дать вам пузыри уведомлений, когда ваши сети подключены или отключены.

Нажатие кнопки "Выход" в окне закрывает окно. Он не закрывает значок в трее, поэтому, если вы начали с простого wicd-gtk (или wicd-gtk --tray, а затем открыли окно), то у вас останется значок в трее. Это известно как поведение "близко к лотку" и является очень распространенным, хотя для некоторых людей может быть лучше, если его можно настроить так, чтобы он этого не делал. Если вы начали с wicd-gtk --no-tray, то все это закроется, когда вы нажмете кнопку Quit. Если у вас есть иконка в трее (не так ли?), То вы можете закрыть все это из контекстного меню иконки в трее. Или с Ctrl-C, где бы вы ни начали.

Если у вас нет иконки в трее и вы ее не хотите, начните с wicd-gtk --no-tray. Затем ваш клиент закроется, когда вы нажмете кнопку "Выйти". Если вы хотите иконку в трее, но хотите, чтобы все это исчезло при нажатии кнопки "Выйти" в окне, то в данный момент вам не повезло.

Другие вопросы по тегам