cron 作业是否触及输出文件

Does a cron job touch the output file

我有以下形式的 cron 作业:

*/5 * * * * /path/to/script.sh >> /tmp/script.out 2>&1

重定向空 echo 的输出并将其附加到输出文件时,修改日期会发生变化。 我的问题是在 cron 的输出文件中是否也会发生这种情况?

我想知道这个来验证文件上次执行的时间,而不必故意写入文件。

如果您的脚本没有输出任何内容,则输出文件不是 "touched",即修改时间未更新。但是您可以在这种情况下明确添加 "touch":

*/5 * * * * /path/to/script.sh >> /tmp/script.out 2>&1; touch /tmp/script.out

顺便说一下,echo empty 输出并不是真正的空,它会产生换行符(即 LF = 换行符):

$ echo | hexdump -c 
0000000  \n

(已评论:当文件不存在时,创建(触摸)它。当它存在时,它不被触摸。)

当启用 cron 时(usr/password 未被阻止,没有 cron 被拒绝)我会信任 cron。当你想看看是否一切正常时,你应该从你的脚本中获取生命周期(目录和权限仍然有效,shebang 末尾没有 ^M,没有无效的更改或其他失败的依赖项)。
最好的方法是从脚本调用 touch 文件。