A velha ideia do roteiro do cão de guarda, né? Não é a maneira mais elegante de resolver o seu problema, mas pode remediar temporariamente a situação até que você possa descobrir por que isso está acontecendo em primeiro lugar.
O problema real precisa ser resolvido. Ou é que o servidor precisa ser mais bem ajustado ou que o servidor não é poderoso o suficiente para lidar com a carga em primeiro lugar.
Você determinou que o processo realmente morre. Nesse caso, é tão simples quanto determinar se o processo ainda existe. ps aux deve fazer isso por você.
por exemplo:
ps aux|grep php-fpm|grep -v grep|awk '{print $2}'
deve gerar o id do processo do php-fpm. Se não existe, precisa de ser reiniciado
então algo ao longo das linhas disso deve fazer o truque. (curto e simples)
#!/bin/bash
pid='ps aux|grep php-fpm|grep -v grep|awk '{print $2}''
if [ $pid == '' ]
then
service php-fpm restart
fi
Esse script seria executado como um crontab a cada minuto. e não foi depurado. então experimente e certifique-se de que está funcionando.
O problema em fazer isso com processos zumbis é que eles realmente existem e estão "rodando", mas não fisicamente fazendo nada. Nesse caso, eles precisariam ser mortos primeiro e, em seguida, o processo reiniciado.
Novamente, a coisa certa a fazer é determinar o que realmente está causando o travamento do serviço. A ideia do script de vigilância é apenas para você ganhar tempo.
Espero que ajude. Boa sorte