dea*_*sin 8 bash logging stdout stderr systemd-journald
我喜欢使用 systemd 的日志来查看和管理我自己的脚本的日志。我已经意识到您可以根据每条消息从我的用户脚本登录日志。
echo 'hello' | systemd-cat -t myscript -p emerg
Run Code Online (Sandbox Code Playgroud)
有没有办法将所有消息重定向到日志,甚至是由其他命令生成的消息?喜欢..
exec &> systemd-cat
Run Code Online (Sandbox Code Playgroud)
更新:
取得了部分成功。从终端尝试了Inian的建议。
~/scripts/myscript.sh 2>&1 | systemd-cat -t myscript.sh
Run Code Online (Sandbox Code Playgroud)
它起作用了,stdout 和 stderr 被定向到 systemd 的日志。奇怪的是,
~/scripts/myscript.sh &> | systemd-cat -t myscript.sh
Run Code Online (Sandbox Code Playgroud)
在我的 Bash 终端中不起作用。
当其他程序调用我的脚本时,我仍然需要找到一种方法在我的脚本中执行此操作。
我试过..
exec 2>&1 | systemd-cat -t myscript.sh
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
更新2:
从航站楼出发
systemd-cat ~/scripts/myscript.sh
Run Code Online (Sandbox Code Playgroud)
作品。但我仍在寻找一种从脚本中执行此操作的方法。
管道systemd-cat
是一个需要与脚本同时运行的进程。Bash 为此提供了一个工具,尽管它不能移植到 POSIX sh
。
exec > >(systemd-cat -t myscript -p emerg) 2>&1
Run Code Online (Sandbox Code Playgroud)
进程>(command)
替换启动另一个进程并返回一个伪文件名(类似于/dev/fd/63
),您可以重定向到该伪文件名。mkfifo
如果您想将其移植到 POSIX ,这基本上是您可以进行的黑客攻击的包装sh
。
归档时间: |
|
查看次数: |
6554 次 |
最近记录: |