Возможное дублирование:
что делать, если ctrl-c не может убить процесс?
На моем ноутбуке я нажимаю функциональную клавишу ноутбука + перерыв. На моем рабочем столе мой ключ прерывания (рядом с экраном печати) выглядит так:
Pause
Break
Если я нажимаю его (без Ctrl / Alt / и т. Д.), Я получаю это (игнорируйте эхо, они просто есть, чтобы я мог понять, что к чему):
# sleep 10;echo "no ctrl/alt/shift/etc"
[12]+ Stopped sleep 10
Если я нажимаю это со сдвигом, я получаю это:
[root@ID6052 public_html]# sleep 10;echo "shift + pause/break"
[13]+ Stopped sleep 10
Если я нажимаю его с помощью Ctrl, ничего не происходит.
Если я нажимаю Pause / Break с Alt, я получаю это:
[root@ID6052 public_html]# sleep 10;echo "alt + pause/break"
[15]+ Stopped sleep 10
Как мне заставить его просто остановить программу? Если я получаю список запущенных процессов, все эти команды «[xx] + Stopped ...» отображаются (в остановленном состоянии). На моем ноутбуке нажатие кнопки func + break (т. Е. Просто клавиши обычного прерывания ... кнопка func также используется для блокировки прокрутки, экрана печати и т. Д.) Полностью закрывает программы!
less
подобноvim
илиemacs
, принимает меры для более полного захвата ввода с клавиатуры. Вы должны знать, как выйти из этих программ (q (может быть ^ Cq, если в режиме 'tail') вless
; <ESC>: q <Return> вvim
; ^ X ^ C вemacs
). Хотя эти (и большинство других) программ позволят вам приостановить (остановить) их с помощью ^ Z, тогда вы можете использовать оболочку, чтобы убить их (ответ Питера упоминает об этом). Хотя программы тоже могут 'захватить' ^ Z (технически это делает emacs, но по умолчанию он приостанавливает себя, когда получает ^ Z). AFAIK, нет единого способа выйти из любой программы tty из того же tty.Ответы:
Обычно оболочка Unix будет иметь следующие сопоставления клавиш
control-C => SIGINT (прерывание)
control-Z => SIGTSTP (терминальная остановка / приостановка)
иногда есть также
control-y => отложенный останов (не уверен, как это делается)
Control-C обычно прерывает и завершает вашу программу. Но SIGINT может обрабатываться и игнорироваться или обрабатываться программой.
Control-Z обычно приостанавливает (останавливает) вашу программу. Но SIGSTSP также может обрабатываться и игнорироваться или обрабатываться программой, хотя на практике это кажется более редким, чем обработка SIGINT.
Отправка SIGSTOP (
kill -STOP
из другого терминала) приостановит (остановит) вашу программу и не может быть обработана.Похоже, что комбинации клавиш, которые приводят к остановке вашей программы, вероятно, эквивалентны Control-Z.
Если вы получаете процессы в остановленном состоянии, ваша оболочка сообщает номер задания. Похоже, вы используете Bash. В любом случае, большинство оболочек позволяют вам контролировать остановленные или фоновые задания, используя их номера.
И так далее, убивать, убивать, ставить в фоновом режиме или ставить на первый план свою (первую) работу соответственно.
Вы можете использовать команду
Чтобы перечислить задания, в настоящее время связанные с оболочкой, в которой вы находитесь. Ну, в зависимости от того, какая это оболочка, а какая не указана.
источник
Пытаться:
control-C
источник
Вы можете использовать Ctrl-, Cчтобы завершить выполнение программы в терминале.
Вы можете убить программы, которые уже были остановлены с
kill
:где
PID
идентификатор процесса (число, которое вы увидите вps
выводе):Использование
kill
без каких-либо переключателей аналогично использованию-TERM
. Это попытается изящно закрыть программу. Если он все еще не отвечает, вы можете принудительно сделатьkill
этоkill -9
, хотя это и не рекомендуется, так как это может оставить файлы из открытых буферов.источник
Существует два основных способа прерывания работающей программы из терминала Unix:
Если они не работают, используйте клавишу Ctrl-, zчтобы приостановить программу (или переключиться на другой терминал), и используйте
kill
команду, чтобы отправить сигналыTERM
илиKILL
(в указанном порядке) программе. Последний всегда завершает работу программы, когда в следующий раз появляется возможность ее запуска (что происходит не всегда сразу, как если бы она читала из сетевого файла).источник