在 crontab 中以 sudo 身份执行 php

在 crontab 中以 sudo 身份执行 php

我编写了一个 PHP 脚本,由于执行了一些其他与系统相关的内容,因此执行时需要 sudo 权限。因此我已将其添加到crontab -e但我看不到我的脚本是否正常运行。

命令:

*/5 * * * * /usr/bin/php /srv/www/php/script.php && date > /srv/www/php/mylog.log

唯一的输出是日期。我的脚本没有响应。它是可执行的(chmod a+x),如果我以 root 身份在终端中使用相同的命令,则一切正常。所以这取决于crontab -e

另外,我确认我的 cronjob 正在运行(/var/log/syslog):

Oct 23 16:40:01 $MYMACHINE CRON[13797]: (root) CMD (/usr/bin/php /srv/www/php/script.php && date > /srv/www/php/mylog.log)

每 5 分钟一次。而且我的“mylog.log”总是获得最新的时间戳,所以我猜想,里面的脚本可能有问题。

编辑:我创建了另一个测试脚本来检查脚本是否被执行。但是脚本被执行了,所以这是脚本内部的问题。

我正在尝试将动态 IP 添加到 iptables 链中:

#!/bin/bash
value=`cat whitelist.txt`
#echo "$value"

for i in $(echo $value | tr "," "\n")
do
  # process
  /sbin/iptables -I teamspeakCommunication --src $i -j ACCEPT
done

你能看到一些奇怪的东西吗?

答案1

将其添加到您的 /etc/crontab 文件中,如下所示:

*/5 * * * * root /usr/bin/php /srv/www/script.php && date > /srv/www/php/mylog.log

如果您的脚本的第一行#!/usr/bin/php也是执行权限,您可以像任何其他脚本一样直接调用它,例如用 bash、perl 等编写的脚本......

此致!

相关内容