264 文字
1 分
シェルスクリプトで排他処理
運用サーバで、2分おきにsubversionのupdateを行うシェルスクリプトを動かしています。
今までは、1回のupdateが50秒程度で終了するので、同時実行を防ぐための排他処理をしていませんでした。しかし、サーバの負荷が高かったときは2分以内で終わらない場合があるためスクリプト実行の排他処理をしなければなりません。
Webを調べているとシェルスクリプトでロック用のディレクトリを作ってます。しかし、かっこわるい。。。そこで見つけたのがlockfileというコマンド。このコマンドを使った方がロック取得を失敗したときの挙動を変えられるから便利そうです。(今回の場合は意味無いけど)
以下にコード書いておきます。
#!/bin/sh
LOCKFILE=/tmp/subversion.locked
# try to get lock. With no retry.lockfile -r 0 $LOCKFILE
# evaluate return codeif [ $? -ne 0 ]; then echo "Command aborted" exit 1fi
# do something exclusive commandecho "important command"
# unlockrm $LOCKFILE シェルスクリプトで排他処理
https://blog.teraren.com/posts/シェルスクリプトで排他処理/