====== 22 Bash flock 2重起動防止 ====== ===== Cronで実行する場合 ===== flock -n /tmp/somthing.lock something.sh ==== 実行例 ==== $ flock -n /tmp/flock.lock sleep 360 「-n」オプションだと、実行せずに終了します。 $ flock -n /tmp/flock.lock echo 'Hello World.' $ 「-x」オプションだと、終了を待って実行します。 300秒後に実行される $ 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 待機が必要な場合、失敗させるようにします {{tag>bash flock}}