Postfixメールログファイルから過去1時間に発生したログエントリを抽出する1行のコマンドを探しています。
に基づいてこの問題、提案されたコマンドを実行してみましたが、かなり長いです。私はこれを短縮/改善することを望んでいます。現在使用しているコマンドは次のとおりです。
awk -vDate1=`date -d'now-1 hour' +%H:%M:%S` -vDate2=`date -d'now-1 hour' +%d` '{ if ($3 > Date1 && $2 >= Date2) print $0}' /var/log/maillog
電子メールログのログ形式は次のとおりです。
Jan 18 05:55:44 smtp-out-01 postfix/smtpd[8748]: connect from server.com[1.2.3.4]
Jan 18 05:55:44 smtp-out-01 postfix/smtpd[8748]: 70CF214B4: client=server.com[1.2.3.4]
Jan 18 05:55:44 smtp-out-01 postfix/cleanup[8751]: 70CF214B4: message-id=<[email protected]>
Jan 18 05:55:44 smtp-out-01 postfix/qmgr[28134]: 70CF214B4: from=<[email protected]>, size=1806, nrcpt=1 (queue active)
過去1時間のアイテムを抽出する最も短く効率的な方法は何ですか?
ベストアンサー1
journalctl -u postfix -S "$(date -d "-1 hour" +%Y"-"%m"-"%d" "%T)
-u を使用してサービス名を指定し、-S を使用して date コマンドで生成される「以降」の日付を指定します。