シェルスクリプト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内部(カーネル)が行うため。

$?は、

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

参考

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

ファイルのロックに関する基礎知識

シェルの変数に慣れる

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。