1

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

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

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

3 ответа3

1

У меня все еще та же проблема с 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, но процесс, который работает для меня, вероятно, должен работать для вас без каких-либо изменений.

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

Во-вторых, запустите kill и pids процессов.

ИЛИ ЖЕ

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

kill $(pidof python)
1

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, присоединенное к этому процессу, вместо запуска.

-1

Вы не говорите, используете ли вы 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 не запустится ни одним, просто порождая процесс, который может дать вам пузыри уведомлений, когда ваши сети подключены или отключены.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .