Принудительно сломать петлю в ш

1064
ZimmyDubZongyZongDubby

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

7

1 ответ на вопрос

11
Shawn Chin

Самый простой способ, который я знаю, это приостановить задание переднего плана ( ^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команду.