Cron 将 stdout 和 stderr 重定向到不同的文件

时间:2021-02-02 13:57:33

标签: shell cron pipe

我正在使用带有 python-crontab 的 python 脚本在 crontab 中生成作业条目,并每分钟执行一次。

我正在做类似的事情:

my_cron = CronTab(user=getpass.getuser())
job = my_cron.new(command=pathname+'/cron_restart.sh >> ' + pathname + '/log_listener.txt 2>&1')
job.minute.every(1)
my_cron.write()

以便 crontab 条目看起来像(带有正确的路径名,清楚地)

* * * * * __pathname__/cron_restart.sh >> __pathname__/log_listener.txt 2>&1

这样,我将 stdout 和 stderr 都重定向到 log_listener.txt 文件。是否可以将它们拆分,然后将它们发送到两个不同的文件中?

1 个答案:

答案 0 :(得分:1)

<块引用>

这样,我将 stdout 和 stderr 都重定向到 log_listener.txt 文件。是否可以将它们拆分,然后将它们发送到两个不同的文件中?

您将两者都重定向到 log_listener.txt,因为您特别要求将 stderr (2) 的输出重定向 (>) 到 stdout (&1)。

如果这不是您想要的,请不要那样做?

> f1>f 的快捷方式,它将输出 (>) 从标准输出 (1) 重定向到文件 f,如果存在则截断它.

2 是 stderr,因此您可以只 2> 到某个 other 文件,以便将 stderr 重定向到与 stdout 不同的文件。 >> 是一个附加重定向,因此 2>> 会以与 >> 为 stdin 相同的方式将 stderr 附加到现有文件(或创建它)。

因此你可以只需要一个命令

cron_restart.sh >> log_listener.txt 2>>log_error.txt

将 stdout 和 stderr 记录到不同的文件中。

相关问题