linux: убить фоновую задачу



Как мне убить последнюю порожденную фоновую задачу в linux?



пример:



doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
617   8  

8 ответов:

есть специальная переменная для этого в bash:

kill $!

$! расширяется до PID последнего процесса, выполненного в фоновом режиме.

вы можете убить по номеру задания. Когда вы ставите задачу в фоновом режиме вы увидите что-то вроде:

$ ./script &
[1] 35341

это [1] - это номер задания, на который можно ссылаться следующим образом:

$ kill %1
$ kill %%  # Most recent background job

для просмотра списка номеров заданий используйте . Еще от man bash:

существует несколько способов ссылаться на задание в оболочке. Характер % вводит имя задания. Номер работы n может быть упоминается как %n. На задание также можно ссылаться с помощью префикса имени, используемого для его запуска, или с помощью подстроки, которая появляется в командной строке. Например, %ce относится к остановившемуся ce работа. Если префикс соответствует нескольким заданиям, bash сообщает об ошибке. Используя %?ce, С другой стороны, относится к любому заданию, содержащему строку ce в командной строке. Если подстрока соответствует более чем одному заданию, bash сообщает об ошибке. Символы %% и %+ обратитесь к представлению оболочки о текущем задании, которое является последним заданием, остановленным, когда оно было на переднем плане или запущено в фоновом режиме. С предыдущего места работы может ссылаться с помощью %-. В выходных данных, относящихся к заданиям (например, выходные данные команды jobs), текущее задание всегда помечено символом +, и предыдущая работа с -. Один % (без сопроводительной спецификации работы) также ссылается на нынешняя работа.

следующая команда дает вам список всех фоновых процессов в вашем сеансе, вместе с ПИД. Затем вы можете использовать его, чтобы убить процесс.

jobs -l

пример использования:

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139

Это должно убить все фоновые процессы:

jobs -p | xargs kill -9
skill doB

skill - это версия команды kill, которая позволяет выбрать один или несколько процессов на основе заданного критерия.

вам нужен свой пид... используйте "ps-A", чтобы найти его.

Это вне темы ответ, но, для тех, кто заинтересован, это может быть ценным.

Как и в ответе @John Kugelman, % связано с спецификацией задания. как эффективно найти? используйте команду less &pattern, кажется, что человек использует меньше пейджера (не уверен), в man bash type &% затем введите Enter, будут отображаться только строки, содержащие"%", чтобы изменить все, введите &. затем вводить.

просто используйте команду killall:

killall taskname

для получения дополнительной информации и более расширенных параметров введите "man killall".

Comments

    Ничего не найдено.