Linux: уничтожьте фоновую задачу

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

186
задан Gilles 'SO- stop being evil' 5 May 2012 в 06:43
поделиться

6 ответов

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

kill $!

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

227
ответ дан 23 November 2019 в 05:48
поделиться

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

$ ./script &
[1] 35341

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

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

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

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

284
ответ дан 23 November 2019 в 05:48
поделиться

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

jobs -l

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

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139
45
ответ дан 23 November 2019 в 05:48
поделиться
skill doB

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

2
ответ дан 23 November 2019 в 05:48
поделиться

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

1
ответ дан 23 November 2019 в 05:48
поделиться

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

killall имя задачи

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

-2
ответ дан 23 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: