Есть ли что-то, что я могу сделать из терминала, когда программа зависает и Ubuntu становится невосприимчивой? [duplicate]

На этот вопрос уже есть ответ здесь:

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

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

Тогда я понял, что, набрав Ctrl + Alt + t, я могу открыть терминал, и это сработало: терминал открылся. Но я не знал, что делать дальше.

Итак, мой вопрос: Что делать из терминала, если программа зависла? В моем случае это был nautilus (я подключался к удаленному серверу, используя его как FTP-программу), и в итоге я перезагрузил машину с помощью sudo reboot.

Это отстой. Было бы гораздо лучше закрыть не реагирующую программу, но как это сделать? И что если я не знаю имя неотвечающей программы?

К вашему сведению, я читал эту тему "UI элементы становятся полностью неотвечающими" и я не думаю, что здесь тот же случай, потому что обычно у меня нет такой проблемы, это что-то вроде редкости, и память работает нормально, и машина довольно новая (intel Core i7, 8 Gb ram).

0
задан 13 April 2017 в 05:24

2 ответа

Можно сделать xkill. Эта изящная небольшая утилита автоматически терзает следующее окно, которое Вы нажимаете.

Другая опция, которую можно использовать, является чем-то позвонившим top или htop. Ищите странный процесс, особенно что-то отмеченное как "зомби" или поднимающий много системных ресурсов. Можно тогда уничтожить его с помощью K ключ. Используйте уничтожают код 9, поскольку это вызывает момент, и вызванный уничтожают процесса.

Говорят, что плохая программа nautilus. Используйте один из этих методов:

  1. Использование xkill в терминале и нажимают на окно Nautilus. X завершит его сессию, заставляя Наутилус отказать. Массово разошлите ESC ключ в течение нескольких секунд, чтобы удостовериться, что Xkill stll не работает.
  2. killall -9 nautilus
  3. Выполнение top, ищите nautilus и уничтожьте его от вершины.

Примечание, которое Вы, возможно, должны были бы использовать sudo полномочия уничтожить некоторые процессы.

3
ответ дан 6 October 2019 в 12:50

Одно из больших преимуществ на терминальном основанной системы, которую мы имеем, - то, что ответ является звучанием ДА.

то, Что я обычно делаю, переключиться на терминал 1 (Ваш рабочий стол всегда находится в терминале 7) с управление - высокий звук - f1 .

, Если Вы знаете то, что программа, это будет довольно легким: найдите идентификатор процесса той задачи и уничтожьте его. Задача исчезнет на терминале 7 и если это зафиксировало катастрофический отказ, Ваша система ответит снова.

Пример с помощью Firefox: при запуске Firefox, это получает идентификатор процесса, и можно просмотреть их с ps -ef | grep firefox. Firefox замены с тем, что Вы хотите искать.

ps -ef |grep firefox
rinzwind  5046  1484 48 19:52 ?        00:00:01 /usr/lib/firefox/firefox
rinzwind  5113  4992  0 19:52 pts/4    00:00:00 grep --color=auto firefox

(процесс, относящийся к grep, является моей командой)

1-е число behing мое имя для входа в систему является идентификатором процесса. kill -9 5046 уничтожит Firefox:

~$ kill -9 5046
~$ ps -ef |grep firefox
rinzwind  5148  4992  0 19:54 pts/4    00:00:00 grep --color=auto firefox

и Firefox пошелся мой рабочий стол.

проблема обычно состоит в том, чтобы определять корректный идентификатор процесса: когда у Вас будет 5 сессий Firefox, открытых... получение корректного будет определенной проблемой. Тогда Вы, возможно, должны были бы добавить еще в некоторой логике для сужения его.

<час>

Предупреждение: используйте здравый смысл. Уничтожения более низких идентификаторов процесса (под 500) нужно избежать.

2
ответ дан 6 October 2019 в 12:50

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

Похожие вопросы: