ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ数量
9
10
1
3
1
2
17
7
1
1
4
13
4
1
2
307
1
9
2
7
21
5
1
30
3
3
1
6
1
1
46
1
3
3
1
1
1
1
1
1
33
46
7
9
10
8
10
3
18
2
9
2
2
6
9
1
1
6
12
4
3
3
2
1
8
2
4
1
6
30
2
12
4
3
1
1
2
3
2
1
3
4
3
3
4
2
2
1
1
2
1
2
1
2
1
27
2
1
3
2
2
1
1
2
3
17
5
9
1
1
2
16
2
6
1
2
12
1
3
1
1
4
11
1
6
4
2
7
1
3
3
13
1
4
1
1
10
3
1
17
3
1
5
1
2
1
1
2
9
2
2
3
2
1
3
1
3
1
2
2
2
1
2
6
1
4
3
5
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
4
5
1
36
2
4
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
4
1
2
2
25
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
19
7
1
5
1
1
3
1
2
1
1
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
2
2
1
1
1
2
2
1
1
2
1
1
12
1
1
1
1
1
1
1
1
1
1
1
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:1126 Today:622 Total:183713