Eu não executei um servidor da Web no Linux, por isso não sei quais processos serão iniciados quando um script php
for executado, mas alguns pontos me ocorrem.
(1) A maneira fácil de verificar se um programa está em execução é usar pidof
, que retornará um erro se não for encontrado, por exemplo, para aguardar até que um processo seja concluído, use:
while pidof ProcessName; do sleep 1; done
mail.sh
(2) No entanto, se um script termina e reinicia dentro de um segundo, você pode perder o término, então você precisa de um script mais elaborado:
if p="$(pidof ProcessName)"
then while [ "$(pidof ProcessName)" == "$p" ]; do sleep 1; done
fi
mail.sh
Isso fará com que o PID não mude, como acontecerá em uma nova encarnação de ProcessName
.
Obviamente, a duração do atraso precisará ser escolhida como um equilíbrio entre a velocidade com a qual você deseja responder à rescisão e a sobrecarga de verificações mais frequentes.
Uma solução melhor para todos seria se o seu servidor Web tivesse um recurso integrado para iniciar um comando após a conclusão de um script php
.