Я хочу создать сценарий, запускающий две программы. Эта часть проста, но есть одна загвоздка: я хочу убить второго, если первый выйдет. Как я могу это сделать?
редактировать
Я пытался убить программу по ее PID после выхода другой, но программа hamster-time-tracker
, которое представляет собой приложение Python, которое немедленно завершает работу, по-видимому, порождая другой процесс. Как я могу это обойти? Есть ли способ создать другой PID?
Редактировать 2
Догадаться. Мне пришлось бежать python /usr/bin/hamster-time-tracker
вместо того hamster-time-tracker
, и он продолжал работать.
#!/bin/bash
cmd-a &
a=${!}
cmd-b &
b=${!}
wait $a
kill $b
я использовал yes a
и yes b
как команды при тестировании.
Есть Подождите команда в bash, чтобы дождаться завершения первого приложения, а затем убить второе приложение.
Поскольку ожидания вставляются автоматически после команд, не заканчивающихся на &, правильный порядок может избавить вас от проблем с ожиданием вручную:
A &
B # waits
kill $! # then kills A