😊
[Linux] Syslogの日付について
要点
- LinuxにおけるSyslog (RedHat系:
/var/log/mesages
、Debian系:/var/log/syslog
)のファイルフォーマットは「日 時 ホスト名 情報」となっている
※crieitから移植 - Syslog例
Feb 16 18:00:10 web sshd[13865]: Accepted publickey for user01
from 192.168.0.2 port 45680 ssh2
- bash scriptやワンライナーコマンドで絞り込むとき、日にちが1桁の場合絞り込みがうまくいかない
- 一桁日にちの場合のSyslog例:「月(スペース)(スペース)日にち」の表現になる
Feb 4 21:25:22 ホスト名 情報`
コマンド
LANG=C date | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"
- Syslog内容を作業当日の絞り込み
# cat /var/log/messages | grep "`LANG=C date | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"`"
Feb 4 10:0:01 ホスト名 情報
Feb 4 10:0:01 ホスト名 情報
コマンド説明
- 日付の表示 例:Fri Feb 4 22:10:50 JST 2022
LANG=C date
- 日付フォーマットを加工 例:Feb 4 (2桁日にちの場合時刻まで含まれる)
cut -d " " -f 2-4
- 2桁日にちの場合の時刻除去
sed -e "s/ ..:.*$//"
コマンド実行例
- 1桁日にちのコマンド実行例
$ LANG=C date | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"
Feb 4
- 2桁日にちのコマンド実行例
LANG=C date --date '5 day ago' | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"
Jan 30
Syslogの絞り込み例
- ワンライナーでの実行例
# cat /var/log/messages | grep "`LANG=C date | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"`"
Feb 4 10:0:01 ホスト名 情報
Feb 4 10:0:01 ホスト名 情報
- 変数定義後の事項例
# LOGDATE=`LANG=C date | cut -d " " -f 2-4 | sed -e "s/ ..:.*$//"`
# cat /var/log/messages | grep "${LOGDATE}"
Feb 4 10:0:01 ホスト名 情報
Feb 4 10:0:01 ホスト名 情報
備忘
- フォーマット不一致例
$ LANG=C date "+%b %d"
Feb 04
Discussion