Вопрос

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

Пример:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
Это было полезно?

Решение

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

kill $!

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

Другие советы

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

$ ./script &
[1] 35341

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

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

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

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

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

jobs -l

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

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

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

jobs -p | xargs kill -9
skill doB

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

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

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

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

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

убить все имя задачи

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top