如何从 cron 重新启动 PHP-FPM?

如何从 cron 重新启动 PHP-FPM?

我正在尝试使用 Cron 定期重新启动 PHP5-FPM,但没有成功。

我可以毫无问题地手动重启,使用service php5-fpm restart/usr/sbin/service php5-fpm restart

但是,当我使用相同的命令(包括使用 的完整路径)时/usr/sbin/service,什么也没有发生。 cronjob 确实运行了(正如我从 syslog 中看到的那样),但 PHP5-FPM 并未重新启动。

我的 root 用户的 crontab 的相关行如下:

* * * * * /usr/sbin/service php5-fpm restart

我已确认which service,服务路径确实是/usr/sbin/service

为什么这不起作用?

答案1

您可以使用initctl

/sbin/initctl  restart php5-fpm

答案2

迟到的答案

cron在非常轻的环境中运行脚本。

service确实会检查服务是否初始化新贵/etc/init.d脚本,在本例中将运行

[ /sbin/ ] restart

命令(符号链接到初始化)但它失败了,因为/sbin路径不是PATHwhen的一部分计划任务运行并且restart不给出其绝对路径。

你实际上可以设置路径为了计划任务定时任务,但最好直接设置需要的命令

m h * * * /sbin/restart php5-fpm


笔记
使用符号链接/sbin/重启而不是直接打电话初始化脚本/命令在这里是有原因的,基本上是为了帮助管理员使用命令执行特定的事情,使用简单的语法并具有易于记忆的名称。

今天restart是一个符号链接。明天它可能会变成一个在调用之前执行其他操作的脚本initctl

答案3

我能想到的唯一解决方案是在 /etc/init.d/php5-fpm 文件中注释掉以下几行:

# Don't run if we are running upstart
#if init_is_upstart; then
#    exit 1
#fi

相关内容