You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中如何将stdout、stderr同时写独立日志和管道转发给外部程序

实现方案

你可以借助Bash的进程替换特性,单次运行脚本即可同时满足两个需求,命令如下:

python3 file.py > >(tee -a normal.log) 2> >(tee -a error.log >&2) 2>&1 | logToTelegram.sh

各部分逻辑说明

  • > >(tee -a normal.log):将标准输出(stdout)导入tee命令,tee会将内容追加写入normal.log,同时将相同内容输出到当前shell的标准输出
  • 2> >(tee -a error.log >&2):将标准错误(stderr)导入另一个tee命令,tee将内容追加写入error.log后,把输出重新导回标准错误流,避免和标准输出提前混淆
  • 2>&1 | logToTelegram.sh:将前面输出的标准输出、标准错误合并,通过管道传递给logToTelegram.sh处理

注意事项

  • 进程替换是Bash、Zsh等常用shell的特性,POSIX标准的sh不支持该语法,执行前确认你的运行环境是兼容的shell
  • tee命令的-a参数对应你之前>>的追加写入效果,如果需要每次执行覆盖日志文件,删除该参数即可

内容的提问来源于stack exchange,提问作者Freude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:15:02