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