目次
はじめに
みなさま、dateコマンドを活用されていますでしょうか?
起動しているOSのシステム日時を設定するコマンドですが、この用途で利用することは
あまりないかと思います。NTP等、適宜時刻が同期される設定になっているのが通常かと思いますので。
私は、設定変更作業の要所要所で実行することで、作業記録のために利用することがほとんどです。
ファイルを編集する前に、バックアップを取得する際にも、コピーコマンドの引数として、
dateコマンドを指定することも、よくある使い方です。
そんなdateコマンドについて、紹介させていただきます。
環境
OS : AlmaLinux 10
dateバージョン : 9.5
使い方
何も引数を指定せず実行することで、現在の時刻を表示させることができます。
# date
Sun Jun 14 10:15:04 PM JST 2026
#
システムの日時を変更してみましょう。
# date -s "2026/06/16 10:00:00"
Tue Jun 16 10:00:00 AM JST 2026
#
# date
Tue Jun 16 10:00:02 AM JST 2026
#
変更されましたね。
次に、日時を表示する様々は方法を紹介います。
+表示形式を指定することで、任意の形式で日付を表示することができます。
# date +%Y/%m/%d
2026/06/14
#
ファイルバックアップの際にこれを活用します。コピーコマンドの引数として、以下のように指定します。
日付けに加えて、時刻も追加しています。
# ls -la test.txt*
-rw-r--r-- 1 root root 5 May 13 19:57 test.txt
#
# cp -p test.txt test.txt.$(date +%Y%m%d-%H%M%S)
#
# ls -la test.txt*
-rw-r--r-- 1 root root 5 May 13 19:57 test.txt
-rw-r--r-- 1 root root 5 May 13 19:57 test.txt.20260614-230928
#
想定通りです。
表示したい日時の指定方法も多く用意されていますので、紹介します。
# date -d now
Sun Jun 14 10:29:11 PM JST 2026
#
# date -d yesterday
Sat Jun 13 10:29:49 PM JST 2026
#
# date -d tomorrow
Mon Jun 15 10:30:04 PM JST 2026
#
# date -d "-1 week"
Sun Jun 7 10:42:35 PM JST 2026
#
# date -d "+1 week"
Sun Jun 21 10:41:46 PM JST 2026
#
# date -d "last week"
Sun Jun 7 10:47:39 PM JST 2026
#
# date -d "next week"
Sun Jun 21 10:47:41 PM JST 2026
#
# date -d "3 days ago"
Thu Jun 11 10:50:43 PM JST 2026
#
# date -d "3 days ago 12:00"
Thu Jun 11 12:00:00 PM JST 2026
#
これらの指定方法を活用して、各種ログファイルから、特定日の出力を抽出することができます。
# zgrep "^$(date -d '3 days ago' '+%b %e') " /var/log/cron-20260614.gz | head
Jun 11 00:01:01 hogehoge CROND[1573195]: (root) CMD (run-parts /etc/cron.hourly)
Jun 11 00:01:01 hogehoge run-parts[1573198]: (/etc/cron.hourly) starting 0anacron
Jun 11 00:01:01 hogehoge anacron[1573206]: Anacron started on 2026-06-11
Jun 11 00:01:01 hogehoge anacron[1573206]: Normal exit (0 jobs run)
Jun 11 00:01:01 hogehoge run-parts[1573208]: (/etc/cron.hourly) finished 0anacron
Jun 11 00:01:01 hogehoge run-parts[1573210]: (/etc/cron.hourly) starting awstats
Jun 11 00:01:01 hogehoge run-parts[1573218]: (/etc/cron.hourly) finished awstats
Jun 11 00:01:01 hogehoge CROND[1573194]: (root) CMDEND (run-parts /etc/cron.hourly)
Jun 11 01:01:01 hogehoge CROND[1575488]: (root) CMD (run-parts /etc/cron.hourly)
Jun 11 01:01:01 hogehoge run-parts[1575491]: (/etc/cron.hourly) starting 0anacron
#
まとめ
いかがでしたか?
運用保守において、特定の日時を指定して、処理を実行することは多くあると思います。
今回紹介した、dateコマンドの指定の仕方が参考になれば幸いです。

