Можно ли что-то сделать из терминала, если программа зависает и Ubuntu перестает отвечать на запросы?

Можно ли что-то сделать из терминала, если программа зависает и Ubuntu перестает отвечать на запросы?

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

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

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

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

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

К вашему сведению, Я прочитал эту тему "Элементы пользовательского интерфейса становятся полностью невосприимчивыми" и я не думаю, что это тот же случай, потому что у меня обычно не возникает этой проблемы, это происходит довольно редко, и память работает нормально, и машина довольно новая (Intel Core i7, 8 ГБ ОЗУ).

решение1

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

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

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

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

sudoОбратите внимание, что для завершения некоторых процессов вам могут потребоваться привилегии.

решение2

Одним из главных преимуществ терминальной системы является то, что ответ на нее однозначен: ДА.

Обычно я переключаюсь на терминал 1 (ваш рабочий стол всегда находится в терминале 7) с помощью control- alt- 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, — моя команда)

Первая цифра после моего имени входа — это идентификатор процесса. 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).

Связанный контент