Как убить все асинхронные процессы - PullRequest
2 голосов
/ 18 марта 2010

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

Вот пример:

function command_doing_nothing () {
  sleep 10
  echo "I'm done"
}

for (( i = 0; i < 3; i++ )); do
  command_doing_nothing &
done

echo "Jobs:"
jobs

sleep 1

# Now we want to kill them

Как убить эти 3 задания, работающие в фоновом режиме?

1 Ответ

3 голосов
/ 18 марта 2010

Для уничтожения ВСЕХ заданий (если этот скрипт выполняется в своем собственном экземпляре оболочки):

for x in $(jobs -p); do kill $x; done
...