프로그램이 이미 실행 중인지 확인하기 위해 bash 스크립트를 만드는 방법

프로그램이 이미 실행 중인지 확인하기 위해 bash 스크립트를 만드는 방법

저는 Python 프로그램을 만들고 있으며 bash 스크립트를 통해 시작할 계획입니다. 그러나 컴퓨터가 프로그램을 두 번 실행하려고 하면 프로그램이 제대로 작동하지 않습니다. 프로그램을 한 번만 시작하면 되므로 프로그램이 이미 실행 중인지 어떻게 알 수 있습니까?

답변1

한 가지 방법은 Python 프로세스의 PID를 기록한 다음 /var/runbash 스크립트가 해당 PID를 가진 파일이 존재하고 해당 PID에 대해 여전히 실행 중인지 확인할 수 있습니다.

또 다른 가능성은 pgrep프로세스가 실행 중인지, 이름에 고유한 부분이 있는지 확인하는 것입니다(파이썬은 사용하기에는 너무 일반적이지만 py 스크립트 자체는 작동할 수 있습니다). 예를 들어:

if pgrep -f "python yourScript.py" &>/dev/null; then
    echo "it is already running"
    exit
else
    python yourScript.py
fi

yourScript.py그것이 스스로를 악마화하거나 그와 유사한 것이라고 가정합니다 .

답변2

Bash 스크립트가 호출되는 경우my_script.sh을 클릭한 다음 맨 위에 다음을 추가합니다.

#!/bin/bash
for pid in $(pidof -x my_script.sh); do
    if [ $pid != $$ ]; then
        exit 1
    fi 
done
python python_app.py

모든 관련 PID가 나열됩니다.my_script.sh현재 실행 중인 프로세스와 동일한지 확인합니다. 그렇지 않은 경우 스크립트를 종료하십시오.

답변3

ps -ef를 사용해 보십시오

  #!/bin/bash
  export me=`basename $0`
  if [[ -n $(ps -ef | grep $1 | grep -v grep | grep -v $me) ]]; then      
     echo "the program is running";
  else     
    echo "not running"; 
  fi

답변4

파일을 잠그는 것이 더 우아한 접근 방식일 수 있습니다. 프로그램이 시작되면 잠금이 있는지 확인하고, 잠금이 있으면 중지됩니다. 없으면 새로 만들고 계속 실행됩니다.

이는 잠긴 파일에서 프로그램이 얼마나 오랫동안 실행되었는지 알려주는 유용한 방법이기도 합니다.

며칠전에 검색을 하다가 이런 글을 발견했습니다.bash 스크립트 사본 하나만 실행되도록 하는 가장 좋은 방법은 무엇입니까?

관련 정보