Linux: убить фоновое задание

Как убить последнюю заданную фоновое задание в Linux?

Пример:

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

Ответ 1

В bash есть специальная переменная:

kill $!

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

Ответ 2

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

$ ./script &
[1] 35341

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

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

Чтобы просмотреть список номеров заданий, используйте команду jobs. Больше от man bash:

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

Ответ 3

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

jobs -l

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

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

Ответ 4

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

jobs -p | xargs kill -9

Ответ 5

skill doB

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

killall taskname

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