7

Если я запускаю цикл for в командной строке в sh и нажимаю control-C, он обычно отменяет текущий запущенный процесс, поэтому мне нужно удерживать ^ C, пока сама оболочка не перехватит его и не прервет цикл. Есть ли способ немедленно прервать текущий процесс и цикл?

1 ответ1

11

Самый простой способ, который я знаю, это приостановить задание переднего плана (^Z), а затем убить его, используя идентификатор задания (kill %<JOB_ID>).

Пример:

[me@host]$ while [ : ]; do less /etc/motd; done   # Ctrl-C can't kill this

После Ctrl+Z

[1]+  Stopped                 less /etc/motd

[me@host]$ kill %1
[me@host]$

Число в скобках ([1]) в начале сообщения о приостановке дает вам идентификатор задания.

Вы также можете перечислить идентификаторы приостановленных работ, используя команду jobs .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .