【发布时间】:2012-10-03 06:39:42
【问题描述】:
我有一个 bash 脚本,用于检查我的 PHP 服务是否正在运行,并在需要时启动它。
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KP=$(pgrep -P 1 -f script.php)
if [ "X$KP" = "X" ]
then
/usr/bin/nohup php /var/www/test/script.php >>/var/www/test/log.txt 2>&1 &
fi
然后我将以下条目添加到crontab -e(作为我的用户)。
* * * * * /var/www/test/startup >> /var/www/test/cron.log 2>&1 &
cron 运行,查看htop 可以看到进程。但是,它似乎没有工作或写入日志。它只是坐在那里使用 0% 的 CPU。 /var/www/test/ 文件夹归我所有,日志文件拥有 666 权限。
怎么了?或者更确切地说,我可以更改什么以使错误日志正常工作,以便我知道出了什么问题?
【问题讨论】:
-
如果您从命令行手动运行代码,它可以工作吗? ` /usr/bin/nohup php /var/www/test/script.php >>/var/www/test/log.txt 2>&1 & `
-
@Crazy_Bash,输出为
[1] 1858(pid)并且进程正在运行。它似乎也写入了log.txt文件。 -
多半是权限问题,试试在crontab里加sudo
-
但是如果它从 CLI 以普通用户身份运行,为什么需要从 cron 以 root 身份运行?