web-dev-qa-db-ja.com

スクリプトはsystemdジャーナルに書き込めません

簡潔にするために、スクリプトから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 --full --all --no-pager -n 10)。

ここで何が問題になっていますか?

6
toogley

使用する - 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

編集:指定したsyslog識別子のメッセージのみを表示するには、-tオプションを使用します。

journalctl -t yourIdentifier

このパラメーターは複数回指定できます。

8
xloto

| systemd-catは、次の場合は機能しません。

  • スクリプトがsystemdによって直接実行されている。
  • スクリプトがstdout/stderr(exec 1>>$LOGFILE)をリダイレクトしました

これは、あなたが| tee systemd-catを使用している場合でも同じです。

この場合、最善のアクションはそれを元に戻すことです:

  • stdoutのリダイレクトを削除する
  • printf呼び出しに| tee -a $LOGFILEを実行させる
2
Blake H