Неявное уничтожение фоновых процессов, связанных с процессом переднего плана

В Bash я запускаю ряд процессов, выполняющихся в фоновом режиме, а Bash ожидает на переднем плане:

sleep 7 & sleep 10 & wait

(Это на самом деле упрощение того, что npm script делает, что является применением этого вопроса.)

Тогда всякий раз, когда я Ctrl+C вне wait процесс, я бы хотел, чтобы все фоновые процессы были убиты.

Это вообще возможно? Как?

1 ответ

Решение

Фоновые процессы являются дочерними процессами оболочки, но не дочерними процессами wait так что нет хорошего способа распространения сигнала на wait к любому из других процессов.

Быстрый и грязный способ убить все фоновые процессы, которые вы можете поместить в сценарий или псевдоним,

kill -INT $(jobs -l | awk '{print $2}')

kill -INT $(jobs -p)
Другие вопросы по тегам