Linux:убить фоновую задачу
-
06-07-2019 - |
Вопрос
Как мне убить последнюю созданную фоновую задачу в 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».