Убить все фоновые задания

Есть ли более компактная форма убийства фоновых заданий, чем:

for i in {1..5}; do kill %$i; done 

Кроме того, {1..5}, очевидно, имеет закодированное магическое число в нем, как я могу сделать его «N», когда N является правильным числом, не делая:

 $(jobs | wc -l) 

Я действительно использую \ j в PS1, чтобы получить # управляемых заданий, это эквивалент?

3 Solutions collect form web for “Убить все фоновые задания”

Чтобы просто kill все фоновые задания, управляемые bash , сделайте

 kill $(jobs -p) 

Обратите внимание: поскольку оба jobs и kill встроены в bash , вы не должны запускать какие-либо ошибки в слишком длинном типе списка аргументов .

Используйте xargs вместо подкоманды $(jobs -p) , потому что если jobs -p пустые, команда kill будет терпеть неудачу.

 jobs -p | xargs kill 

Я предпочитаю проверять, есть ли какие-либо задания, которые существуют до их убийства – таким образом, сценарий не будет терпеть неудачу, если ничего не работает.

Он также короче. Бросьте это в свой .bash_profile :

 function killjobs () { JOBS="$(jobs -p)"; if [ -n "${JOBS}" ]; then; kill -KILL ${JOBS}; fi } 

Затем выполните:

 killjobs 

Чтобы убить все выполняемые задания.

  • вычесть строку из файла во все строки из другого файла
  • Трубьте каждую последнюю команду запуска скрипту
  • Суммируйте заданный срез элементов в массиве (bash)
  • Источник против. почему различное поведение?
  • В чем разница между && и | в сценарии bash?
  • Какое определение первичного в bash?
  • Необходимо захватить stdout и изменить переменную по ссылке из функции в bash
  • Разница между «bash executable» и «bash -c executable»
  • Баш: почему не «настроено» вести себя так, как я ожидаю?
  • Терминал говорит, что команда не найдена при запуске
  • приостановка сценария bash до тех пор, пока не будут выполнены предыдущие команды
  • Linux и Unix - лучшая ОС в мире.