shell - Cron 将 stdout 和 stderr 重定向到不同的文件
问题描述
我正在使用带有 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 文件。是否可以拆分它们并将它们发送到两个不同的文件?
解决方案
这样,我将 stdout 和 stderr 都重定向到 log_listener.txt 文件。是否可以拆分它们并将它们发送到两个不同的文件?
您将两者都重定向到log_listener.txt
是因为您特别要求将 stderr ( 2
) 的输出重定向 ( >
) 到 stdout ( &1
)。
如果那不是你想要的,不要那样做吗?
> f
是将输出( )从标准输出()1>f
重定向到文件的快捷方式,如果存在则截断它。>
1
f
2
是stderr,所以您可以只2>
到其他文件,以便将stderr 重定向到与stdout 不同的文件。>>
是一个附加重定向,因此将以与stdin2>>
相同的方式将 stderr 附加到现有文件(或创建它) 。>>
因此,你可以有一个命令
cron_restart.sh >> log_listener.txt 2>>log_error.txt
将 stdout 和 stderr 记录到不同的文件中。
推荐阅读
- excel - Excel随机数公式
- reactjs - React 状态总是返回初始值
- python - Phototour 数据集的平均值和标准差的计算
- node.js - Twilio 弹性呼叫任务类型
- linux - Nginx 代理管理器 (Docker) + 邮件服务器
- django - 无法在 django 应用程序中使用 docker 运行 Celery 和 celery beat(无法加载 celery 应用程序)
- python - 我想反转堆栈,但我不知道如何使用递归来反转这个......如何在不使用递归的情况下反转堆栈
- javascript - 倒计时javascript的自定义事件
- python - Django 模板无法加载
- arrays - 对象数组的访问时间是否为 O(1)?