То, что вы ищете, обычно называется named pipe
и используется для межпроцессного взаимодействия (IPC). Существует множество замечательных документов по созданию именованных каналов в Bash, поэтому я оставлю вам написание кода для этого.
Как только у вас есть именованный канал, вы можете сделать что-то вроде записи PID каждого из процессов в канал (используя специальную переменную Bash $$
для текущего PID), а затем каждый из них сидит в цикле, проверяя наличие существование каждого из PID. если он сталкивается с тем, кого больше не существует (процесс умер или был убит), то он может предпринять действие.
Вы должны поместить что-то подобное в соответствующий раздел вашего скрипта (ов). Пожалуйста, проверьте это сначала. :)
trap "rm -f $named_pipe" EXIT
# Assuming you have a file under $named_pipe with space-delimited PIDs
pids = $(< $named_pipe)
while :
do
for pid in pids:
do
if ! kill -0 $pid;
then
exit
fi
done
done