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
的标准错误中获取输入,但将输出发送到与其他所有内容相同的标准输出。
我正在尝试为 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
的标准错误中获取输入,但将输出发送到与其他所有内容相同的标准输出。