ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

bash:script:22_flock

22 Bash flock 2重起動防止

Cronで実行する場合

flock -n /tmp/somthing.lock something.sh

実行例

console1

$ flock -n /tmp/flock.lock sleep 360

「-n」オプションだと、実行せずに終了します。

console2

$ flock -n /tmp/flock.lock echo 'Hello World.'
$

「-x」オプションだと、終了を待って実行します。
300秒後に実行される

console2

$ flock -n /tmp/flock.lock echo 'Hello World.'
$ Hello World.

シェル内で実行する場合

ファイルディスクリプタを99にして、すでに存在するかどうかでチェックする

#!/bin/bash

exec 99>/tmp/$(basename $0 .sh).lock

## lockが存在したら終了
flock -n 99
if [ $? -ne 0 ]; then
    exit 1
fi

## 終わったらunlock
flock -u /tmp/$(basename $0 .sh).lock 

オプション

  -s, --shared             共有ロックを取得します
  -x, --exclusive          排他ロックを取得します (既定値)
  -u, --unlock             ロックを解除します
  -n, --nonblock           待機が必要な場合、失敗させるようにします
bash/script/22_flock.txt · 最終更新: 2021/07/30 10:33 by matsui