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 待機が必要な場合、失敗させるようにします