シェルスクリプト2重起動防止

シェルスクリプト2重起動防止

rsyncでデータをバックアップしているのですが、
最近rsyncに時間がかかり、2重起動の恐れが出てきたため、
それを防止します。


起動前にプロセスをチェックする方法もありますが、
ディレクトリを使用する(mkdir式)
ファイルロック(排他処理)で対応。

LOCK_DIR="/tmp/shell_lock"

mkdir $LOCK_DIR

if [ $? == 0 ];then

/usr/local/bin/rsync -a -e ssh --delete /home/xxxx/ /home/xxxx

rm -r $LOCK_DIR


mkdirはディレクトリの「存在チェック」と「作成」が同時に行えます。
※mkdir()処理はOS内部(カーネル)が行うため。


$?は、
直前に実行されたコマンドのステータス(終了フラグ)を表します。これを使って実行されたコマンドが正しく終了したかどうか判定します。