【问题标题】:Cron job write to a new file every time it runsCron 作业每次运行时都会写入一个新文件
【发布时间】:2018-07-10 06:29:06
【问题描述】:

我正在尝试在 Python3 上运行一个每小时运行一次的 cron 作业,并且每次都写入一个新的日志文件。我的代码目前是:

0 * * * * /home/user/Projects/example.py > /home/user/Projects/cron_logs/'`date +\%d\%m\%y_\%H\%M\%S`'.log 2>&1

这里还有其他问题,我曾经把这条线放在一起,但它不起作用。它会创建一个名为date +\%d\%m\%y... 的文件,我什至无法打开该文件。我做错了什么?

【问题讨论】:

  • 你有没有先在cron之外测试过这条线?
  • 在我看来,您的日期没有解决。用双引号将文件名括起来可以打开文件吗?
  • 您的问题是您在 date 命令周围使用了单引号。在 Bourne shell 中,单引号表示解释内部的任何内容。所以你的反引号只是一个反引号而不是运行 date 命令。

标签: python linux python-3.x cron


【解决方案1】:

您的date 格式不正确,请查看date --help 并进行实验。

这也适用于在将其安装为预定命令之前对命令进行实际测试;即在您的终端中运行./script.py > "/target/folder/$(date).log" 命令以确保它确实有效,然后您可以将其放入 crontab。

这应该会修复您现有的条目;

0 * * * * /home/user/Projects/example.py > "/home/user/Projects/cron_logs/$(date +\%d\%m\%y_\%H\%M\%S).log" 2>&1

这将创建文件名如下所示的日志文件:090718_234854.log

(我还建议查看ISO-8106(例如date --iso-8106=s

【讨论】:

  • % 必须转义,否则 cron 会将其解释为从标准输入开始读取命令的其余部分。
猜你喜欢
  • 2011-01-20
  • 2014-12-24
  • 1970-01-01
  • 2021-10-23
  • 2018-02-18
  • 2017-05-26
  • 2011-03-20
  • 2011-05-29
  • 2012-07-18
相关资源
最近更新 更多