BASH 将时间戳添加到 stdout 和 stderr

BASH Prepend timestamp to stdout and stderr

我正在尝试为 stdout 和 stderr 中的所有行添加时间戳。但是我不想将它们中的任何一个重定向到文件。此命令由进程管理器 (pm2) 在脚本中 运行,然后将 stdout 和 stderr 记录到它们各自的文件中。我正在尝试修改流(不合并它们)并在 pm2 记录之前插入时间戳。我可以让它们中的任何一个单独工作,但 运行 会遇到修改两者的问题。感谢您提供的任何帮助。

这是我的一些工作代码

python3.6 ./bot.py > >(gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=11=] }') 2> >(gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=11=] }')

您需要将第二个 gawk 命令的输出重定向回标准错误:

python3.6 ./bot.py \
    > >(gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=10=] }') \
   2> >(gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), [=10=] }' >&2)
#                                             this part here ^^^

否则,第二个 gawk 命令将从 python3.6 的标准错误中获取输入,但将输出发送到与其他所有内容相同的标准输出。