Cron 作业未按预期运行

Cron 作业未按预期运行

所以我有一个 python 脚本,可以拉取 git/svn/p4 存储库并对数据库进行一些写入操作。

我只是想自动运行该脚本,并且根据我在系统日志中看到的情况,它正在运行,甚至我尝试通过管道传输输出的文件也正在创建,但该文件是空的。这是 cron 作业:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag > ~/cronout.log 2&>1

有点难住了,不知道从哪里开始。认为这可能是钥匙串密码的要求,等等。任何想法都会有帮助!

答案1

使用 tee 抓取输出

三通手册

tee从标准输入/输出读取以写入文件。我有一个支持我的要求之一的 Python 脚本,但简单的“>”重定向失败。 Tee是抓取输出的方式。

你的线路应该是:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag | tee -a ~/cronout.log 2>&1

尝试这个:将 python 脚本包装在 /usr/bin/ 目录中的 #!/bin/bash 脚本中。

然后更换你的线路:

10 04 * * * user /usr/bin/myPythonWrapperInBash& > /path/to/log/out 2>&1

Tee 调用说明

  • [-a] 追加文件。
  • 普通调用(无标志)将覆盖该文件,并且您将丢失日志。

答案2

事实证明,问题出在 Python 脚本所需的环境变量上,而且它太早出现在脚本中,以至于在输出任何内容之前就破坏了脚本。

Cron 没有常规环境。

此外,拉取 git 存储库需要 ssh 密码,我可以通过使用 Keychain 来解决这个问题。

使用的帮助这篇博文和一些 bash 包装脚本,我能够让一切正常工作并自动化。

相关内容