gpt4 book ai didi

python - 如何重定向 cron 脚本的完整输出

转载 作者:太空狗 更新时间:2023-10-30 01:40:16 25 4
gpt4 key购买 nike

我每天 18:35 运行一个简单的 cronjob:

05 18 * * * ~/job.sh 2>&1 >> ~/job.log

所以~/job.sh 的输出应该写入~/job.log。在 job.sh 中,有一些 echo 命令和一些 python 脚本被执行,例如:

echo 'doing xyz'
python doXYZ.py

现在,无论 python 脚本产生什么输出,它们都不会写入 ~/job.log。我只在 ~/job.log 中看到回显文本。如何将 shell 脚本的完整 输出重定向到 ~/job.log?

最佳答案

Arkaitz 有最简单的解决方案。但是,要查看您的代码片段有什么问题,我们需要进入 bash 手册:

Note that the order of redirections is significant. For example, the command

  ls > dirlist 2>&1

directs both standard output and standard error to the file dirlist, while the command

 ls 2>&1 > dirlist

directs only the standard output to file dirlist, because the standard error was duplicated from the standard output before the standard out‐ put was redirected to dirlist.

显然输出重定向只重定向到另一个流的目标,而不是另一个流本身。当 bash 解析您的命令行时,它会遇到 2>&1 子句并将 stderr 重定向到 stdout 的目标,此时是仍然是控制台(或附加到 cronstdout 的任何内容)。只有在这之后 stdout 才会被重定向。

所以你真正想要的是:

05 18 * * * ~/job.sh >>~/job.log 2>&1

关于python - 如何重定向 cron 脚本的完整输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com