我正在使用带有 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 文件。是否可以将它们拆分,然后将它们发送到两个不同的文件中?
答案 0 :(得分:1)
这样,我将 stdout 和 stderr 都重定向到 log_listener.txt 文件。是否可以将它们拆分,然后将它们发送到两个不同的文件中?
您将两者都重定向到 log_listener.txt
,因为您特别要求将 stderr (2
) 的输出重定向 (>
) 到 stdout (&1
)。>
如果这不是您想要的,请不要那样做?
> f
是 1>f
的快捷方式,它将输出 (>
) 从标准输出 (1
) 重定向到文件 f
,如果存在则截断它.
2
是 stderr,因此您可以只 2>
到某个 other 文件,以便将 stderr 重定向到与 stdout 不同的文件。 >>
是一个附加重定向,因此 2>>
会以与 >>
为 stdin 相同的方式将 stderr 附加到现有文件(或创建它)。
因此你可以只需要一个命令
cron_restart.sh >> log_listener.txt 2>>log_error.txt
将 stdout 和 stderr 记录到不同的文件中。