Você pode usar initctl
:
/sbin/initctl restart php5-fpm
Estou tentando reiniciar o PHP5-FPM periodicamente usando o Cron, mas não estou tendo sorte.
Posso reiniciar manualmente sem problemas, usando service php5-fpm restart
ou /usr/sbin/service php5-fpm restart
No entanto, quando eu uso o mesmo comando, incluindo o uso do caminho completo para /usr/sbin/service
, nada acontece. O cronjob é executado (como eu vejo no syslog), mas o PHP5-FPM não reinicia.
A linha relevante do crontab do meu usuário root é a seguinte:
* * * * * /usr/sbin/service php5-fpm restart
Confirmei com which service
que o caminho para o serviço é de fato /usr/sbin/service
.
Por que isso não está funcionando?
Você pode usar initctl
:
/sbin/initctl restart php5-fpm
Tarde para a resposta da festa
cron
executa scripts em um ambiente muito leve.
service
, de fato, verifica se o serviço é um init upstart ou um script /etc/init.d e, nesse caso, executará o
[ /sbin/ ] restart
comando (um link simbólico para initctl ) mas falha porque o caminho /sbin
não faz parte do PATH
quando cron é executado e restart
é dado sem o seu caminho absoluto.
Você pode realmente definir o PATH para cron no início do crontab , mas é melhor definir diretamente o comando em necessidade como
m h * * * /sbin/restart php5-fpm
Nota
Hoje, restart
é um link simbólico. Amanhã pode se tornar um script fazendo outras coisas antes de chamar initctl
.
A única solução que posso fazer é comentar as seguintes linhas no arquivo /etc/init.d/php5-fpm:
# Don't run if we are running upstart
#if init_is_upstart; then
# exit 1
#fi