简而言之:我想systemd
通过脚本写信给日记。
这不起作用:
printf "%s\n%s\n%s\n" CODE_FILE=/etc/zsh/zprofile CODE_LINE=31 MESSAGE="could not read /etc/dircolors" | logger --journald
当我执行确切的代码(或任何其他带有打印的变体等)时,日志中没有任何反应。
我journalctl
这样称呼:
journalctl --full --all --no-pager -n 10
这里有什么问题吗?
答案1
使用systemd-cat
。它将管道或程序输出与日志连接起来。
例子:
printf "Write text to the journal" | systemd-cat
结果:
journalctl -xn
[..]
Apr 12 13:37:00 servername [31509]: Write text to the journal
如果您想识别日志记录工具,您可以添加-t选项:
printf "Write text to the journal" | systemd-cat -t yourIdentifier
journalctl -xn
Apr 12 13:37:00 servername yourIdentifier[31833]: Write text to the journal
编辑:要仅显示指定系统日志标识符的消息,请使用 -t 选项:
journalctl -t yourIdentifier
该参数可以指定多次。
答案2
| systemd-cat
如果出现以下情况,则不起作用:
- 该脚本由 systemd 直接执行,并且
- 脚本已重定向 stdout/stderr (
exec 1>>$LOGFILE
)
即使您这样做,这仍然是正确的| tee systemd-cat
。
在这种情况下,最好的做法是逆转它:
- 删除标准输出的重定向
- 让你的
printf
电话执行| tee -a $LOGFILE