簡単に言えば、私は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
ロギングツールを識別するために追加できます。-ティーオプション:
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
このパラメーターは複数回指定できます。
答え2
| systemd-cat
次の場合は機能しません。
- スクリプトはsystemdによって直接実行されます
- スクリプトが stdout/stderr(
exec 1>>$LOGFILE
) をリダイレクトしました。
そうしても、これはまだ本当です| tee systemd-cat
。
この場合、最良の方法はこれを逆にすることです。
- 標準出力リダイレクトの削除
- 携帯
printf
電話にしてみてください| tee -a $LOGFILE