Linuxには次のログファイルがあります。
Mar 2 09:46:45 [rest of the log]
Debian Linuxの多くのサービスログには年情報が含まれていないため、私の考えでは、ログは最近のイベントを示唆しているようです。
このログ行が最後の10分かどうかを確認したいので、次のようにしました。
Now="$(date '+%b %d %H:%M:%S')"
echo "Now : $Now"
TENMINSEC=$(date -d 'now - 10 minutes' '+%s')
echo "Ten min before : ${TENMINSEC}"
LOGDAT=$(date -d 'Mar 2 09:45:40' '+%s')
echo "LOGDAT : ${LOGDAT}"
if [ $LOGDAT -ge $TENMINSEC ];then
echo "Log date is greater";
fi
LOGDATと最近10分を秒に変換して比較します。
しかし、私が望むことをしているのは混乱していますか?年情報が含まれていない場合、結果に影響はありませんか?どうすれば解決できますか?
添付:
ログファイル行の読み込みに問題はありません。ログファイルから読み取った内容は、コードの日付(3月2日09:45:40)に置き換えられます。
ベストアンサー1
日付文字列に年が指定されていない場合、GNU date
(使用中のように見える)は日付が現在の年を参照していると仮定します。
$ date -d 'Mar 2 09:45:40'
Sat Mar 2 09:45:40 CET 2019
したがって、この日付をUnix時間に変換して同じ形式の他の日付と比較することは、新年の前日が真夜中であることを除いて正しいことを行います。