Назад | Перейти на главную страницу

BASH: привязать существование программ к другой программе

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

редактировать

Я пытался убить программу по ее 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