ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ#
8
10
1
3
1
2
17
7
1
1
4
13
4
1
2
279
1
8
2
7
17
5
1
30
3
3
1
6
1
1
44
1
3
3
1
1
1
1
1
1
32
46
7
9
10
7
10
3
3
2
9
2
2
6
6
1
1
5
10
4
3
3
2
1
8
2
4
1
6
30
2
12
2
3
1
1
2
3
1
1
2
4
3
2
4
2
2
1
1
2
1
2
1
2
1
27
2
1
2
2
2
1
1
2
3
15
5
8
1
1
2
14
2
6
1
2
12
1
2
1
1
4
10
1
6
2
1
6
1
3
3
11
1
2
1
1
10
3
1
14
1
1
4
1
2
1
2
9
2
2
3
1
1
3
1
2
1
2
2
2
1
2
3
1
4
3
4
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
3
5
1
35
2
3
2
1
2
2
3
1
1
1
4
1
2
1
3
1
1
1
2
5
2
5
2
1
1
1
5
3
2
4
2
1
2
1
19
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
9
6
1
3
1
1
3
1
1
1
1
2
1
1
1
1
1
1
2
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

Yesterday:1310 Today:104 Total:145778