【问题标题】:Cron job with script sh is not executed but job is running in cron log [duplicate]未执行带有脚本 sh 的 Cron 作业,但作业正在 cron 日志中运行 [重复]
【发布时间】:2018-03-15 22:59:44
【问题描述】:

我尝试设置一个 cron 作业来执行一个 python 测试程序(rm 文件夹中的一个文件),但它不起作用。 我尝试了不同的东西: - 使用脚本 sh 运行程序 - 使用 crontab 中的命令直接运行操作

当我从终端启动 test.sh 时,它运行良好。当我直接在 crontab 命令中启动 rm 文件时,它也可以工作,但是从 crontab 启动脚本 sh 时没有任何反应......

这是我的 cron 选项卡:

*/5 * * * * run_auto_resp_ads.sh
37 14 * * * test.sh
18 14 * * * rm ~/Rendu/test_cron/lol.py

这是 test.sh 内容:

#!/bin/sh rm ~/Rendu/test_cron/lol2.py

当我检查我的 cron 日志时,任务正在运行:

Mar 15 14:21:01 AcerA17 CROND[14905]: (mjz) CMD (test.sh)
Mar 15 14:18:01 AcerA17 CROND[12944]: (mjz) CMD (rm ~/Rendu/test_cron/lol.py)

我还检查了文件权限。

有什么想法吗? 非常感谢:)

【问题讨论】:

  • 对 cron 中的所有内容使用绝对路径。
  • 或者,更好的是,将PATH=/bin:/usr/bin:/usr/local/bin 放在 crontab 的顶部,这将为它运行的所有作业导出该变量。同样,HOME=/Users/magali 或其他适当的名称。
  • 顺便说一句,shbash 是两个不同的外壳。在你的标题中使用一个,在你的标签中使用另一个充其量是令人困惑的。

标签: python bash cron


【解决方案1】:

Cron 不会继承您的环境。 运行 cron 时未设置 $HOME,因此未插入 ~

你可以这样设置:

HOME="/home/user"
18 14 * * * rm ~/Rendu/test_cron/lol.py

【讨论】:

    【解决方案2】:

    test.sh 是否由一行组成?在那种情况下,你有部分问题:构造

    #!/bin/sh
    

    需要单独站在第一行。在您的情况下,“rm”将作为参数发送给“sh”,这不是您想要的。

    【讨论】:

    • 不,rm 在第二行
    猜你喜欢
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2012-06-29
    • 2015-01-11
    • 1970-01-01
    相关资源
    最近更新 更多