スクリプトがすでに実行されているかどうかを確認する方法

スクリプトがすでに実行されているかどうかを確認する方法

スクリプトがすでに実行されているかどうかを知りたいです。定期的に見ると、ps異なる順序で異なるパラメータを取得するため、切り捨てられません。

したがって、関数は次のことを行う必要があります。

check_already_running(){
    if [ `ps -ef| grep $script_name_with_arguments | wc -l ` -gt 1 ]
    then
      echo "already running"
      exit 1
    else
      echo "ok"
    fi
}

たとえば、次のように実行したとします./test.sh -a 2 -c 4

server:/tmp >./test.sh
ok
server:/tmp >./test.sh -a
ok
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -a 2   -c 4
already running
server:/tmp >./test.sh -c 4 -a 2
already running

最後の2つの例は、チェックがより困難で長くなるように見えるため、2つのオプションを提供できる場合は、1つはコマンドを実行するのに十分正確で、もう1つはユーザーが同じパラメータを別の順序/追加間隔で送信する場合です。 。

関連情報