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

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

Отправить сообщение СИГКВИТ сигнал с Ctrl+\.

.. $ sleep 10^\Quit

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

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

Клавиша 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: Безопасно reboot eувидь if в system - это 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+C отправляется на неправильную программу или входной канал. Это особенно часто встречается с такими редакторами, как vi, с командами с конвейерным выводом, сложными командами bash, включающими циклы и т.д.

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

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

    Ctrl+4

    Ctrl+\


  • Или:

    Ctrl+Z а потом беги:

    kill %1

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


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

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

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

Видеть: Волшебная клавиша SysRq и ее комбинации команд.

Чтобы отказаться от человек, использовать qОставлять англ. использовать :q

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

CTRL+SHIFT+C

К

CTRL+C

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

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

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

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

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

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

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

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

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

Примечание:

Прессование Ctrl-Alt-Backspace перезагрузит ваш X-сервер.