Что делать, если Ctrl-C не убивает запущенную работу?

Иногда процессы игнорируют сигнал SIGINT, посылаемый Ctrl-C в Bash. Например, man а также vi, Предполагая, что вы не хотите гуглить или читать руководство по выходу из запущенного процесса, есть ли какая-нибудь последовательность клавиш, которая всегда будет работать (не выходя из терминала)?

7 ответов

Решение

Отправьте сигнал SIGQUIT с помощью Ctrl + \.

.. $ sleep 10
^\Quit

→ Это эквивалентно kill -3 pid, Программы, запускаемые в пользовательском пространстве, не игнорируют сигнатуры.

Существует также набор сочетаний клавиш Magic SysRq. Один из наиболее интересных: Alt + SysRq + k. Это убивает каждый процесс на текущей виртуальной консоли. Если один из ваших ttys полностью и полностью сломан, это может быть использовано для возврата. На tty, работающем с X.org, его можно использовать, чтобы убить Х без пощады.

Клавиша SysRq на большинстве клавиатур такая же, как клавиша печати. На моем ноутбуке его можно вызвать с помощью клавиши Fn; Т.е. Alt→Fn→Print→k в этом порядке.

Вот некоторые из основных ярлыков управления процессами:

  • Ctrl + Z: приостановить процесс (плюс bg возобновить в фоновом режиме, fg поднять на передний план)
  • Ctrl + C: вежливо попросить процесс завершить работу сейчас
  • Ctrl + \: безжалостно убить процесс, который в данный момент находится на переднем плане
  • Alt + SysRq + s: записать данные на диск (всегда делайте это перед тем, как убить что-нибудь важное)
  • Alt + SysRq + s, k: безжалостно уничтожать все текущие процессы на данной виртуальной консоли
  • Alt + SysRq + s, b: беспощадная перезагрузка без размонтирования,
  • Alt + SysRq + r, e, i, s, u, b: безопасно перезагружать систему, если система полностью взломана,

Примечание: Ctrl + Z, в отличие от Ctrl + C и Ctrl + \, также работает для man, vi, less, и тому подобное.

Если есть сомнения, следующая процедура будет почти всегда работать:

~$ sleep 10
^Z
[5]+  Stopped              sleep 10
~$ ps
  PID TTY          TIME CMD
 4804 pts/0    00:00:00 bash
 6207 pts/0    00:00:00 sleep
 6208 pts/0    00:00:00 ps
~$ kill -9 6207
[5]+  Killed                  sleep 10
~$ 

^ Z, конечно, означает, что были нажаты Ctrl + Z.


Для более глубокого взгляда на Оболочки и Терминалы, также посмотрите мои ответы на:

Вы можете попробовать Ctrl+\

  • Попробуйте один из них:

    Ctrl+4

    Ctrl+\


  • Или же:

    Ctrl+Z и затем запустите:

    kill %1

куда %1 номер задания, которое было возвращено, когда вы нажали Control-Z. добавлять -9 заставить убить.


Когда вы находитесь в текстовой консоли, вы также можете попробовать: Ctrl-SysRq. Ядро должно убить процесс.

Или SysRq-k, убить все процессы на текущей виртуальной консоли (может также убить программы X и svgalib).

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

См.: Ключ Magic SysRq и его комбинации команд.

Иногда CTRL+C отправляется не той программе или входному каналу. Это особенно характерно для таких редакторов, как viс командами с конвейерным выводом, сложными командами bash, включающими циклы и т. д.

Простое и быстрое решение - приостановить работу CTRL+Z, а затем уничтожить ее по номеру задания: kill %1 или же kill -9 %1, так далее.

Возможно, вы изменили ярлык копии с:

CTRL+SHIFT+C

к

CTRL+C

Таким образом, когда вы пытаетесь убить процесс, CTRL+C не работает.

Попробуйте заменить ярлык копирования на CTRL+SHIFT+C.

Чтобы выйти из человека, используйте qЧтобы оставить ви использовать :q

Откройте Терминал → Настройки → Ярлыки и выполните поиск, если по ошибке вы заменили любую клавишу на Ctrl+C.

Попробуйте Ctrl+Alt+Backspace

Если вы используете Ubuntu 10.04, вы хотите, чтобы этот ключ работал.

Чтобы включить Control-Alt-Backspace

Перейти в Система -> Настройки -> Клавиатура

Выберите вкладку "Макеты" и нажмите " Параметры макета".

Выберите Последовательность клавиш, чтобы убить X-сервер и включить Control + Alt +Backspace.

Замечания:

Нажатие Ctrl-Alt-Backspace перезапустит ваш X-сервер.

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