简单的 bash 无法通过 cron 正常运行

简单的 bash 无法通过 cron 正常运行

我创建了一个小型 bash 脚本,它使用 wget 获取文件,然后使用 php.ini 处理它。代码如下:

wget -U mozilla -P /home/logfetcher/ http://fakesite.com/log.`date -d 'yesterday' +%Y-%m-%d`.csv
wait    
/usr/bin/php csv-editor.php /home/logfetcher/log.`date -d 'yesterday' +%Y-%m-%d`.csv /home/logfetcher/sorted/log.`date -d 'yesterday' +%Y-%m-%d`.csv 3 9 7 0 2 1 5 11 12 13 && rm /home/logfetcher/*.csv

我测试了它,它工作没有任何问题,但当我将它添加到 cron 时,如下所示:

0 6 * * * /home/logfetcher/fetchlogs.sh

它下载了文件,但 php 似乎根本不起作用(rm 也不起作用,我猜这表明尝试运行 php 文件时出现错误)。我一直在尝试思考为什么会失败并尝试了一些方法,但我似乎没有找到正确的答案来解决它。任何帮助,将不胜感激!

答案1

cron 日志说什么?或者系统日志?如果命令的第一部分有错误,则第二个命令(&& 之后)将不会执行。脚本 csv-editor.php 在你的路径中吗?如果不是,您应该使用绝对路径 /x/y/my.script 运行它。

我很确定该脚本不在您的路径中,因此“/usr/bin/php /x/y/script.php ....”应该可以解决问题。

但首先阅读日志...

答案2

有2种解决方案。您可以将其添加#! /bin/bash为脚本的第一行,也可以使用以下两行启动 crontab 文件:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

相关内容