上記で作成したファイルに60分という有効時間を持たせたいと思います。何らかの原因でファイルが残ってしまった場合、60分超えていればファイルを無効とします。
無効としますが、処理は行いますのでロックファイルのctimeを
touchコマンドで変更するロジックを追加します。
ファイルの最終更新時間は
ctimeです。
ls -lc
上記コマンドで表示される時間がctimeになります。60分超えているファイルを探すのは
findコマンドの-cminオプションを使用します。
具体的には以下のようになります。
find lock -cmin 60
これで60分経ったファイルを探します。このコマンドの戻り値はファイルなので、ファイルが存在するかどうかで分岐するシェルにします。
#!/usr/bin/bash
#ロックファイル
file="lock"
#有効時間(分単位)
tm="60"
#排他制御
if [ -e $file ]; then
#指定時間過ぎたファイルは無効
if [ -e `find $file -cmin $tm` ]; then
echo "expired";
touch $file
else
exit 1;
fi
else
touch $file
fi
#
#何らかの処理
#
#何らかの処理正常終了
if(($#==0));then
echo "normal end"
fi
rm $file
#正常終了
exit 0;