스크립트가 이미 실행 중인지 확인하는 방법

스크립트가 이미 실행 중인지 확인하는 방법

스크립트가 이미 실행 중인지 알고 싶습니다. 주기적으로 살펴보면 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가지 옵션을 제공할 수 있다면 하나는 명령을 실행할 수 있을 만큼 정확하고 다른 하나는 사용자가 동일한 매개변수를 다른 순서/추가 간격으로 보내는 경우입니다.

관련 정보