
shell_script_with_lockfile_sample.sh
#!/bin/bash
# 何かのエラーが発生した時点で、処理を中断
# 未定義の変数を使ったらエラー
# 実行したコマンドを標準エラーに出力
set -eux
CURRENT=$(cd $(dirname $0);pwd)
cd $CURRENT
LOCK_FILE=./lockfile/file.lock
THRESHOLD=21600 # 6時間(秒)
NOW=$(date "+%s")
FILE_TIMESTAMP=$(date -r ${LOCK_FILE} +"%s")
DELTA_SECONDS=$(($NOW - $FILE_TIMESTAMP))
# 規定の時間を経過していたらロックを無効化
if [ ${DELTA_SECONDS} -gt ${THRESHOLD} ]; then
rm -f $LOCK_FILE
fi
# ロックファイルの確認と作成
if [ ! -f $LOCK_FILE ]; then
touch $LOCK_FILE
# 排他対象の処理(略)
rm -f $LOCK_FILE
else
echo "LOCKされています。別プロセスで処理中です。"
exit 1
fi





