dateコマンドの使い方

Linux のシェル内で日付や時間を操作したい場合には、 date コマンドを使用します。例えば、Linuxで構築したウェブサーバやメールサーバのアクセスログファイルやエラーログファイルなどを日付や時間を含んだファイル名に変えて保存するすることがあります。この場合、 date コマンドを使用して日付や時間を取得してファイル名を作成します。

時刻設定を設定する方法

date コマンドを使って時刻の設定ができます。 -s オプションを使って引数を設定したい日時にします。

date -s "2008/07/09 13:47:00"

時刻の表示方法

このコマンドには、表示フォーマットがたくさんあり、いろいろな表示が可能です。基本的には、次のようにフォーマット指定を付加しコマンドを実行します。

date +「フォーマット指定」

「ファーマット指定」の種類は、下の表を参照してください。表示内容の例は、ロケール:ja_JP.UTF-8、タイムゾーン:Tokyoの場合です。

フォーマット指定 表示内容
%H 時 (00 – 23)
%I 時 (01 – 12)
%k 時 ( 0 – 23)
%l 時 ( 1 – 12)
%M 分 (00 – 59)
%p 午前/午後
%r 時刻、12時間 (午[前後]hh時mm分ss秒)
%s 1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張)
%S 秒 (00 – 59)
%T 時刻、24時間 (hh:mm:ss)
%X ロケールによる時刻の表現 (%H時%M分%S秒)
%Z タイムゾーン(JST)
%a ロケールによる省略形の曜日の名前 (日 – 土)
%A ロケールによる完全に表記した曜日の名前 (日曜部 – 土曜日)
%b ロケールによる省略形の月の名前 ( 1月 – 12月)( 1月~9月の数字の前に半角スペース)
%B ロケールによる完全に表記した月の名前、可変長 (1月 – 12月)
%c ロケールによる日付と時刻 (yyyy年mm月dd日 hh時mm分ss秒)
%d 日(月内通算日数) (01 – 31)
%D 日付 (mm/dd/yy)
%h %b と同じ
%j 年内通算日数 (001 – 366)
%m 月 (01 – 12)
%U 日曜日を週の最初の日としたときの年内通算の週の番号 (00 – 53)
%w 週のうちの曜日を数字で表示 。0 が日曜日に対応 (0 – 6)
%W 月曜日を週の最初の日としたときの年内通算の週の番号 (00 – 53)
%x ロケールによる日付の表現 (yyyy年mm月dd日)
%y 年の最後の二つの数字 (00 – 99)
%Y 年 (yyyy)

シェル内でファイル名を日付にしたい場合の使用例

ファイル名に日付を使う場合、例えば、2009年1月1日のログファイル名を作成する場合、システム日付は、2009年1月2日になってからファイルを作るので、「システム日付 – 1日」のファイル名が必要になります。その場合は、以下のようにすれば目的の日付が作成できます。

debian:~# date
2008年  7月  9日 水曜日 15:07:39 JST
debian:~# date --date '1 days ago'
2008年  7月  8日 火曜日 15:08:25 JST

このように、過去日付が必要な場合は、「1」の箇所に戻りたい数値を指定し、「days」の箇所に「months」「years」と指定すれば、月や年単位で過去になります。未来を指定する場合は、「ago」をはずします。実際には、次のようにしてファイル作成します。

cat /var/log/apache2/access.log > /tmp/access-`date --date '1 day ago' +%Y%m%d`.log

作成されるファイル名は、「access-20080708.log」となります。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする