GNU/Linux >> Linux の 問題 >  >> Linux

Bashスクリプトのインスタンスを1つだけ実行するようにするにはどうすればよいですか?

追加のツールを必要としないソリューションが好まれます。

承認された回答:

nsgの答えとほぼ同じです。ロックディレクトリを使用します 。ディレクトリの作成は、Linux、UNIX、* BSD、およびその他の多くのOSではアトミックです。

if mkdir $LOCKDIR
then
    # Do important, exclusive stuff
    if rmdir $LOCKDIR
    then
        echo "Victory is mine"
    else
        echo "Could not remove lock dir" >&2
    fi
else
    # Handle error condition
    ...
fi

デバッグの目的で、ロックshのPIDをlockディレクトリ内のファイルに入れることができますが、そのPIDをチェックして、ロックプロセスがまだ実行されているかどうかを確認できるという考えに陥らないでください。多くの競合状態がその経路にあります。


Linux
  1. Rsyncフィルター:1つのパターンのみをコピーしますか?

  2. Bashスクリプトをデバッグする方法は?

  3. BashスクリプトでCdを使用できないのはなぜですか?

  1. Bashスクリプトで文字列を分割する方法

  2. エイリアス コマンドを bash スクリプトまたは .bashrc ファイルで機能させる方法

  3. Ruby スクリプトのインスタンスが一度に 1 つだけ実行されるようにするにはどうすればよいですか?

  1. この sed スクリプトを高速化するにはどうすればよいですか?

  2. パスに bash スクリプトを追加する

  3. ファイルがbashスクリプトの特定のディレクトリに存在するかどうかを確認するには?