gpt4 book ai didi

php - 使用 crontab 运行 bash 脚本时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:40 25 4
gpt4 key购买 nike

我有一个 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 权限。

怎么了?或者更确切地说,我可以更改什么以使错误日志正常工作,以便我知道出了什么问题?

最佳答案

我建议添加调试内容。一些可能的失败是:

您的用户实际上可以运行 /var/www/test/startup 脚本吗?您的用户可以写入 /var/www/test/cron.log 吗?我建议只拥有 crontab 条目:

* * * * * /var/www/test/startup

任何输出(stdin 和 stderr)都应该通过电子邮件发送给您的用户(除非 sendmail 在这台机器上坏了)。

pgrep 在哪里?是否在PATH=...设置的路径中。同上 php

什么是$KP?将其回显到您知道可写的日志文件中:

touch /tmp/mylog
chmod 666 /tmp/mylog

然后在脚本中:

echo "I'm getting pgrep from <`type -p pgrep`>" >>/tmp/mylog
echo "KP is now <$KP>" >>/tmp/mylog

也许 script.php 进程已经在运行并且属于 PID 1?

也许脚本没有对 /var/www/test/log.txt 的写权限? /var/www/test 归您所有或者 /var/www/test/log.txt 是否为 666 都没有关系,如果父目录之一您不可写或可执行。仔细检查:

if [ ! -w /var/www/test/log.txt ]; then echo "Cannot write to /var/www/test/log.txt"; fi

关于php - 使用 crontab 运行 bash 脚本时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com