date コマンド活用法

古都の老兵
2024-08-30
2024-08-30

はじめに

 RedHat Enterprise Linux 7のサポートが2024年6月30日に終了し、現在サポートされるのは Enterprise Linux 8 と 9 の2つになりました。皆さんは無事 8 or 9 に移行する事ができましたでしょうか?

 そこで気になるのは 10 は何時リリースされるのでしょうか?新しく構築するなら出来るだけサポート期間の長いOSを使いたいでしょうし、10が何時かを調べてみると RedHat 10 のリリースまでのカウントダウンされているサイトがありました。

 395日後?395日後とは具体的に何月何日なんだい!?

 という事で date コマンドで何日後は何月何日を調べる事ができるので確認してみましょう。

date コマンド

 date コマンドはディフォルトで実行した日時が出力されます。

# date
Tue Aug  9 16:51:58 JST 2024

 標準状態だと日本人には分かりずらいので、出力形式を変更してみましょう。

# date +%Y-%m-%d
2024-08-09

 では395日後とは何年の何月何日か?

# date --date "395 days" +%Y-%m-%d
2025-09-08

 という事で、RedHat 10 は2025年の9月にリリース予定だそうです。

何日前は結構使う

 実運用上は〇〇日後は何年の何月何日といった使い方はシステムを運用する上ではまず使いません。運用上必要なのは〇〇日前とか、前月の月だとか前年が必要です。例えばログを180日分保存したいような場合、181日前のログを削除していく必要があります。ログのファイル名にlog_file.YYYMMDD といった日付を用いているような場合に必要になります。syslog/rsyslog 等でログローテーションしているような場合には勝手にやってくれますが。

 実際に180日前を求めるには

# date --date "180 days ago" +%Y-%m-%d
2024-02-11

 days の所を month や year にすると、前月や前年となります。

最後に

 日付の計算は意外と面倒で、閏年で1年が366日になったり2月が28日の年や29日の年があったり、1ヵ月が28日や30日、31日があったりと単純に足し算引き算では計算できませんので、date コマンドを活用するのが簡単で便利です。
 そういえば、学生の時にプログラムで閏年を計算する課題があったなあ、4で割り切れてる年で例外として100で割り切れて400で割り切れない年でしたっけ?