命令手动运行成功,但在 cronjob 中悄悄失败

命令手动运行成功,但在 cronjob 中悄悄失败

我将其作为 cron 作业运行:

( export PATH='/usr/bin:/bin' && echo "$PATH" && wget "https://www.mahmansystems.com.au/WSDataFeed.asmx/DownLoad?CustomerCode=%2F&WithHeading=true&WithLongDescription=true&DataType=0" -O mahman_direct.zip ) && echo 'I reached the end' &>> /home/myparadise/public_html/wp-content/uploads/import/files/output.txt

当我以 cron 用户身份在 CLI 中运行时,它工作正常。

到目前为止,我只有两个导致 cron 作业悄悄失败的原因,这是因为在 CLI 和 cron 中运行命令时用户和路径的差异,但这一次,似乎也不是,因为我测试了 cmd在 CLI 中以 cron 用户身份运行,并且没有观察到权限错误。

wget 确实输出/显示一些描述检索文件过程的文本,但用户不需要交互或输入/响应。

没有错误被定向到output.txt。

还有什么可能是错误的?

还尝试过curl -sLo替代方案,以防万一。没什么区别。

答案1

我不知道%cron 环境中的标志行为。

逃脱\%并有效。

参考文献 1:https://stackoverflow.com/a/1921266

参考文献 2:Cron 陷阱

答案2

为了避免触发意外场景等特殊字符,我个人的建议是在脚本中%放置除绝对琐碎操作以外的任何内容。 cron(尽管我认为对 的单个调用wget可能会被合理地归类为微不足道。嗯。)然后从 调用脚本cron

示例/usr/local/etc/mahmansystems(记住chmod +x):

#!/bin/sh
wget 'https://...' &&
    echo 'I reached the end'

然后,作为系统级条目的示例cron

0 * * * * www-data /usr/local/etc/mahmansystems >>& /home/myparadise/public_html/wp-content/uploads/import/files/output.txt

如果您多次调用 URL,mahmansystems您甚至可以case……esac将它们放在同一个脚本中,提供一个(简单)参数来识别要使用哪个 URL。

相关内容