dateコマンドで現在時刻を騙す『libfaketime』
Pocket

dateコマンドでは、「-d」で○○日後とか、□月後といった指定で日付を取得することが出来る。
しかし、特定の日付を指定した上で○○日後の日付を指定する事が出来ない。

もしdateコマンドで特定の日付の○○日後、次の○曜日といった指定をする場合、今回紹介する『libfaketime』を用いると便利だろう。
これは、dateコマンドが読み込む現在日時を変数「FAKETIME」とすることで、システム時刻に変更を加える事なく特定の日付をdateコマンドで出力させることが出来る。

1.インストール

まずはインストール。
以下コマンドを実行し、コンパイル・インストールを行う。

git clone https://github.com/wolfcw/libfaketime
cd libfaketime/
make
make install
Sponsored Links

2.日時を出力させる

次に、実際にどう使うのかについて記述する。
以下のように、インストールしたライブラリ「libfaketime.so.1」をLD_PRELOADに代入し、dateコマンド実行と同時に変数「FAKETIME」に特定の日時を入れるだけだ。

export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
FAKETIME='特定の日時' date

20151130_000000

[root@test-centos7 libfaketime]# date
2015年 11月 30日 月曜日 22:15:44 JST
[root@test-centos7 libfaketime]#
[root@test-centos7 libfaketime]# date -d 'next sunday'
2015年 12月  6日 日曜日 00:00:00 JST
[root@test-centos7 libfaketime]#
[root@test-centos7 libfaketime]# export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
[root@test-centos7 libfaketime]# FAKETIME='2015-01-01 00:00:00' date
2015年  1月  1日 木曜日 00:00:00 JST
[root@test-centos7 libfaketime]#
[root@test-centos7 libfaketime]# FAKETIME='2015-01-01 00:00:00' date -d 'next sunday'
2015年  1月  4日 日曜日 00:00:00 JST

 

まぁ、あまり使うことはないような気もするけれどどこかで役に立ちそうな気がしなくもない。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。