Остановливаем подвисшее приложение графич. и консольный метод. (РЕШЕНИЕ)

Изображение пользователя balamutick.

Если вы знаете как прекратить не нужные(или подвисшие) вам процессы, знаете о XKill, Kill, top и PID то можете не читать эту статью.

Как и во всех задачах, в линуксе существуют несколько путей решения, поставленной задачи:
Разделим их условно на консольный путь и графический.

Графический:

1)Если система ещё не слишком подвисла (приложение не обездвижило полностью систему) и вы можете двигать мышью или дождаться запуска графической программы, то вы можете запустить из меню Ка-Пуск - "Система" - ksysguard, который очень похож на "диспетчер задач" из windows
Просто выделите зависшую программу и нажмите кнопку завершить процесс(обращу внимание, что некоторые задачи можно завершить только запустив ksysguard под верховным пользователем root).

2) Второй способ наиболее оптимальный из всех (ИМХО) - нажмите сочетание клавиш CTRL+ALT+ESC (настройка по умолчанию), курсор мыши должен превратиться в квадратный X (икс) далее левой кнопкой мыши щёлкните по графической форме приложения (зависшее окно) оно мгновенно закроется и выполнение программы завершиться. Чтобы отменить превративщийся курсор достаточно просто нажать ESC или _правую_ кнопку мыши. (для работы необходимо чтобы утилита XKill была установленна в системе.

3) Радикальный графический способ - по клавишному сочетанию CTRL+ALT+Backspace перезагружается графическая среда. Замечу, что весь компьютер не перезагружается, только окошки. После выполнения перезапуска графической среды (обычно быстро) вас пригласят войти в систему. Это на крайний случай.

Консольный способ:

***Кстати, если у вас не запущено окно консоли(терминала), можно "перепрыгнуть" на одну из "виртуальных" консолей простым нажатием клавиш CTRL+ALT+F1 (или любой другой из F1-F6).
Вернуться же в графику точно так же просто - CTRL+ALT+F7 (или любой другой из F7-F12).***

1)top - консольная утилита показывающая верхние позиции по занимаемым ресурсам компьютера программами (топ-лист - ресурсоёмких программ).
Она выводит таблицу (на одном экране) которая динамически изменяется в зависимости от загрузки ресурсов теми или иными приложениями
Пример вывода(сокращ.):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1413 bk 20 0 183m 99m 17m R 81.1 9.9 29:15.18 xbill
31272 bk 20 0 418m 232m 28m S 9.9 23.0 23:16.15 firefox

увидев процесс явно занимающий все ресурсы тут для примера подвисший xbill (есть такая игра) занял якобы 81.1 % CPU, и для его прекращения необходимо нажать клавишу "K" (от англ. Kill и ввести PID (Process ID) нужного процесса, тут это 1413.

2)Либо можно использовать ещё один надёжный способ. Командаps ax
выведет много строчек подобных этим:
PID   TTY    STAT   TIME  COMMAND
1413  ?     Rl    26:54  xbill
31272  ?     Sl    21:36  /usr/lib/firefox-3.0.6/firefox
7483 pts/5  D+     0:00  grep firefox

Где вам нужен лишь первый параметр будет PID (Process ID) - идентификатор процесса. Запомните его, он нам потребуется.
Выполнив следом за предыдущий командой эту
kill 1413
Мы прекратим (завершим процесс) с идентификатором 1413 в моём примере это XBill (игра).

Замечу так же, что очень удобным является сочетание команд в конвеер, например
ps ax | grep xbill выводит список запущенных процессов (их может быть много), передаёт его команде grep и возвращает нам лишь строчки содержащие слово xbill заданное команде grep, в вышеуказанном примере такая добавка, вывела бы только следующие строчки:

ps ax | grep xbill
PID   TTY    STAT    TIME   COMMAND
1413     ?      Rl   26:54   xbill
1593     ?      Rl   26:54   xbill
1359     ?      Rl   26:54   xbill
Оссобенно это удобно, когда вы знаете какое приложение зависло или\и когда это приложение запущенно несколько раз и вам надо завершить все его копии.

См. также:

Если у вас повисло не одна программа, а весь компьютер (вся ОС), не спешите жать сброс (Reset), прочтите эту тему: "Магическая кнопка SysRq" или "Что делать, если все нахрен повисло" (РЕШЕНИЕ)

+2
Soi-Fong - 1 Март, 2009 - 21:00
Изображение пользователя Soi-Fong.

Добавлю немного.
Процесс по имени можно убить командой
killall имя_процесса
Если не работает сочетание Ктрл+Альт+Эск, то можно выполнить команду xkill и кликнуть по висячему окну.
Как более продвинутая замена утилите top, есть htop, она позволяет нагляднее управлять процессами. И нежелательные процессы по возможности лучше прерывать сигналом TERMINATE, чтобы процесс мог выполнить необходимые операции (сохранить настройки и т.д.) перед закрытием, то есть это мягкое выключение программы в отличие от KILL, который в прямом смысле убивает процесс. И, на сколько мне известно, команды kill и killall по умолчанию посылают приложениям именно сигнал terminate. Подробнее в man kill и man killall.

0
Станислав Збарасский - 2 Март, 2009 - 20:23
Изображение пользователя Станислав Збарасский.

Я тоже писал об этом, и там кое-что есть ещё, чего тут не упомянуто.
http://zbarassky.com/?p=150

+2
balamutick - 3 Март, 2009 - 11:53
Изображение пользователя balamutick.

Я не пытался сделать, велосипед, я просто сделал его таким каким я его вижу :-))).

Ну или попытался изложить языком, понятным широкой аудитории, и только те части которые ей точно пригодятся. ИМХО - человек сколько-нибудь серъёзно занимающийся линуксом (даже как Хобби) - _эти_ вещи знать обязан.

"Линусом Т. ты можешь и не быть - но эти "три" команды знать обязан"

0
taras - 8 Июнь, 2009 - 09:47

Отличная статья, но есть ошибка:
ps ax | xbill - пропущено слово grep
еще видел где-то, но забыл пока дочитал :)

0
balamutick - 8 Июнь, 2009 - 13:08
Изображение пользователя balamutick.

Спасибо. Исправил.

Что ещё увидете, пишите.

0
Гость - 24 Июль, 2009 - 20:23

если нашел нужный тебе PID к примеру 6283, пишешь kill или killall а он тебе в ответ " процесс не убит" как быть в таком случае ??

+3
Станислав Збарасский - 30 Июль, 2009 - 22:50
Изображение пользователя Станислав Збарасский.

Попробовать sudo kill -9 PID.

0
senet - 15 Ноябрь, 2010 - 17:39

а что делать если неработает контр+альт+бкспейс?

0
DarkneSS - 15 Ноябрь, 2010 - 21:14
0
ElrikEdward - 5 Декабрь, 2010 - 02:11

Как настроить глобальные горячие клавиши для запуска ksysguard?

Делал через "настройки KDE меню", установил на ksysguard клавиши Ctrl+Esc, при этом согласился "отвязать" их от предыдущего приложения (стандартного KDE-диспетчера).
Но ksysguard не стал запускаться. Как вернуть горячие клавиши стандартному диспетчеру - не нашёл. (Ходил даже в Параметры системы \ Управление компьютером \ Клавиатура и мышь \ Комбинации клавиш )

Как настроить горячие клавиши на ksysguard?

P.S. Разобрался, как вернуть горячие клавиши на стандартный системный диспетчер: Параметры системы / Управление компьютером / Клавиатура и мышь / Основные действия;
Выбираем "Диалог запуска команд" в выпадающем списке "Компонент KDE";
Находим в списке ниже пункт "Показать активность системы";
Щёлкаем по пункту и ставим горячие клавиши по умолчанию. Они и есть Ctrl+Esc

P.P.S. Разобрался как поставить горячие клавишы на ksysguard, и любую программу.
В консоли пишем khotkeys и добавляем глобальную комбинацию клавишь.
На вкладке "действия" устанавливаем команду, на вкладке "активация" - горячую клавишу.
Всё просто, когда знаешь куда идти... уф, вспотел аж.

0
Vlad_W_1999 - 5 Декабрь, 2010 - 04:30

Команда 'khotkeys' не найдена, возможно вы имели в виду:
Команда 'hotkeys' из пакета 'hotkeys' (universe)
khotkeys: команда не найдена

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры