предварительная стратегия прервать приложение Linux, которое «повесило», и сделало X desktop безответным

Когда приложение (thunderbird) имеет проблему, иногда оно переходит в состояние безответственности, где он заблокировал пользовательский интерфейс, блокирует процессы входа в систему (на терминалах tty), а также предотвращает перезапуск сеанса X с помощью Ctrl-Alt-Backspace.

Обычно в поле * nix отправка сигнала в процесс достаточно, чтобы дать мне достаточно доступа для восстановления контроля, однако в этом случае все было обработано, хотя это было всего лишь одно приложение, использующее большое количество ОЗУ и своп.

Использование Ctrl-Alt-F1 дало мне консоль и приглашение для входа, и я мог ввести имя пользователя root, но оно не вернет подсказку пароля, поэтому я застрял.

Ctrl-Alt-Backspace вызвало перезагрузку X-сессии, но он не дал мне приглашения для входа в систему и потребовался силовой цикл.

Есть ли способ привязать нажатие клавиши к какой-то низкоуровневой «функции прерывания» (я имею в виду, что в общем смысле) приостановить назойливый височный процесс, чтобы я мог видеть, что он пытается сделать, используя strace ?

Я смутно знаю, что некоторые заблокированные процессы не могут быть приостановлены до тех пор, пока они не вернутся, но в этом случае нет никаких указаний на то, что блокирующий процесс не может получить доступ к каким-либо ресурсам ввода-вывода, он просто делает что-то глупое.

Первоначально я думал о каком-то сценарии bash для ионизации и отказался от любого процесса, связанного с thunderbird, с самым низким приоритетом, но я полагаю, что если все будет так плохо, как кажется, то новый процесс не сможет попасть на CPU.

Я хотел бы использовать для этого клавишу Ctrl-Break, поскольку она не используется ни для чего другого во время сеансов рабочего стола на моей машине.

В принципе, рабочий стол (медленно) реагирует на клавиши и мышь, поэтому есть некоторые возможности для запуска команд, чтобы заставить плохой процесс приостанавливаться, я просто не знаю, какие команды доступны в этом сценарии.

3 Solutions collect form web for “предварительная стратегия прервать приложение Linux, которое «повесило», и сделало X desktop безответным”

Я предполагаю, что Thunderbird потребляет много памяти. Если вы можете получить оболочку / консоль, а не просто убить процесс. Как правило, thunderbird будет зависать, если вы перестраиваете индекс поиска или загружаете тысячи писем в кеш.

Вы также можете установить приоритет для убийцы linux oom в /proc чтобы первое, что нужно для SIGTERM.

давайте сначала найдем процесс thunderbird. (используйте то, что вы предпочитаете: pgrep , ps -ef|grep … и т. д.)

 bash$ pidof thunderbird 1439 

Теперь, чтобы временно остановить процесс, вы просто хорошо остановите процесс 🙂

 bash$ kill -s SIGSTOP 1439 bash$ strace ... 

После того, как вы счастливы, вы можете продолжить процесс, хорошо, «продолжить» сигнал. 🙂

 bash$ kill -s SIGCONT 1439 

Кроме того, если это поток, вы можете изучить использование tkill или tgkill но, возможно, вам придется сначала установить его.

Я не знаю, ответит ли он во всех деталях вашего вопроса, но некоторые намеки, которые он вам даст.

когда я пытаюсь понять, что является основной причиной того, что некоторая программа может ошибочно работать, это запустить ее с консоли (я имею в виду, что вы запускаете программу GUI, но вы ее запускаете с консоли), так что у вас есть некоторые указания о том, что она делает , поэтому вы можете понять, как решить проблему с помощью thunderbird.

чтобы быть более конкретным для вашего вопроса, что я делаю, когда у меня есть ситуация, как вы упоминаете, я ssh в машину (да, я могу войти в систему, хотя я даже не могу получить tty1 с Alt + F4), затем top , или с ps ax | grep thunderbird ps ax | grep thunderbird убил программу, а рабочий стол (включая X и все остальные открытые окна) вернулся к жизни.

Я знаю, что это не касается точно в правильных местах, которые вы нарисовали в своем вопросе, но я даю то, что у меня есть.

Я подозреваю, что есть некоторые проблемы с вашим анализом. Вы действительно все еще используете одноядерный процессор? Я подозреваю, что происходит что-то более фундаментальное, чем процесс убегания (на одном ядре с сердечником), хотя возможно, что что-то заставляет систему работать очень медленно.

Конечно, вы не можете получить доступ для запуска любой диагностики после того, как проблема вышла в ногу, не помогает.

Я бы пошел с отключением ACPI / APM (в случае, если есть некоторый вклад от масштабирования часов) и запустить procmon, чтобы попытаться захватить событие.

Вы можете использовать сторожевой таймер только в режиме мониторинга (-q) для запуска диагностики.

  • Два монитора: Intel VGA + Nvidia DVI
  • X висит после спящего режима Fedora 18
  • Эмулировать двунаправленный свиток с помощью горячей клавиши + трекбол
  • Ctrl + Alt + Backspace, чтобы убить X-сервер нельзя отключить
  • Xrandr debian черный экран при изменении разрешения
  • Debian - Вне диапазона после установки
  • Преобразование Xcursor в PNG
  • Где данные калибровки
  • безопасная конфигурация xorg
  • Как отключить часть экрана в X.Org
  • Sway / Wayland не активирует мой второй монитор
  • Linux и Unix - лучшая ОС в мире.