Linux

シェルスクリプトでの排他制御

 

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

 

 

 

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)