Is there a way to redirect all stdout and stderr to systemd journal from within script?
我喜欢使用systemd \\的日志来查看和管理自己的脚本日志的想法。我知道您可以在每条消息的基础上从我的用户脚本登录日志。.
1 | echo 'hello' | systemd-cat -t myscript -p emerg |
是否有一种方法可以将所有消息重定向到日志,甚至包括其他命令生成的消息?
1 | exec &> systemd-cat |
更新:
部分成功。尝试了终端机Inian的建议。
1 | ~/scripts/myscript.sh 2>&1 | systemd-cat -t myscript.sh |
起作用了,stdout和stderr定向到systemd的日记。奇怪的是,
1 | ~/scripts/myscript.sh &> | systemd-cat -t myscript.sh |
didn在我的Bash终端中不起作用。
在其他程序调用我的脚本时,我仍然需要找到一种在脚本中执行此操作的方法。 >
我尝试过。.
1 | exec 2>&1 | systemd-cat -t myscript.sh |
,但是它不起作用。
更新2:
从终端
1 | systemd-cat ~/scripts/myscript.sh |
运行。但是我仍在寻找在脚本中执行此操作的方法。
通向
1 | exec > >(systemd-cat -t myscript -p emerg) 2>&1 |
显然,由于超出我的原因,您不能真正将所有stdout和stderr从脚本内重定向到日志,因为必须将其输入。要解决此问题,我发现了人们正在使用的一个技巧syslog的记录器的工作原理类似。
您可以将所有代码包装到一个函数中,然后将该函数通过管道传递到systemd-cat。 。
1 | journalctl -t myscript.sh --since yesterday |
我很失望,这里没有更直接的方法。