それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ファイルが作成されてから何秒経っているか?作成後指定秒経過したらなにかする。

ファイルが作成されてから何秒経っているか?

このファイルが、作成されてから何秒経過したか。それ知りたいことありませんか?

ファイルAがファイルBより古いときはファイルAを更新するとか

作成後(更新後)の経過秒数を知る

echo $(( $(date +%s) - $(date -r FILE +%s)  ))

これだけです。かんたんですね

コマンドの、細かいところを一つずつ見ていきます。

date コマンドでint秒数を表示する

まずは date コマンドで秒数を出す方法。これは現在のunix 秒が出ます。

date +%s

date コマンドでファイルの更新日付を取得する

次に、ファイルの更新時刻を date の引数として指定してあげる。

date -r FILE

組み合わせて、date コマンドでファイルの作成時をint秒で表示する

date -r FILE +%s

Bashで引き算をする

unix 秒が取れる なら、これを比較のために引き算して上げる必要があります。

echo $(( 100 -1 ))

これらをすべて組み合わせる

ファイルが作られてから何秒(何時間)経過しているかが計算できる

echo $(( $(date +%s) - $(date -r FILE +%s)  ))

条件判断に使う。

ファイルが作成されてから1000秒経過してたら再起動するような条件分岐に使うことが出来ます。

(( $(( $(date +%s) - $(date -r FILE +%s)  )) >  1000 ))  && restart-server

ファイルA/BでAのほうが古ければなにかする。

(( $(( $(date +%s -r FILEA ) - $(date -r FILEB +%s)  )) <  0 ))  && echo old

記号 $( ( expr )) や ( ( expr )) などのbash の記号については

Bashの記号については、過去記事を参考にしてください

参考資料

man bash