cron から実行されたシェルスクリプトで syslog に何かを記録するために logger
を使うことがある。
logger
には -i
オプションがあってこれで tag の隣に [PID] をつけられるのだけれど、これでつく PID は logger 自体の PID なので、シェルスクリプト内で 1 行ちょろりと実行する分にはあまり意味のない PID が記録されてしまう。
ダメな例
#!/bin/sh
logger -it "compress_syslog" -p local1.info 'compressing started'
## 時間のかかる処理とかいろいろ
logger -it "compress_syslog" -p local1.info 'compressing ended'
exit 0
ダメな実行例
Oct 22 18:01:19 test4111 compress_syslog[20139]: compressing started
Oct 22 18:01:29 test4111 compress_syslog[20143]: compressing ended
ので、-t
オプションのタグ名のところに当該シェルの PID を表す [$$]
をつけてあげると良い。
これで同じ PID のシェルスクリプトから出てきたログであることを syslog 上で認識できる。
私的loggerパターン
logger -t "{スクリプト名}[$$]" -p {facilityとpriority} '{ログメッセージ}'
使用例
#!/bin/sh
logger -t "compress_syslog[$$]" -p local1.info 'compressing started'
## 時間のかかる処理とかいろいろ
logger -t "compress_syslog[$$]" -p local1.info 'compressing ended'
exit 0
実行結果例
Oct 22 18:01:48 test4111 compress_syslog[19848]: compressing started
Oct 22 18:02:03 test4111 compress_syslog[19848]: compressing ended