Python의 백그라운드 프로세스

Rana Hasnain Khan 2023년10월10일
  1. Python의 백그라운드 프로세스
  2. Windows의 Python 백그라운드 프로세스
  3. Python의 Linux 또는 Mac의 백그라운드 프로세스
Python의 백그라운드 프로세스

Python 스크립트를 백그라운드 프로세스로 백그라운드에서 실행하는 방법을 소개합니다. 파이썬에서 pythonw도 소개합니다.

Python의 백그라운드 프로세스

자동화 및 데이터 과학의 세계에서 우리는 일상적인 작업을 쉽게 자동화할 수 있고 업데이트하지 않고도 백엔드에서 처리할 수 있는 수준으로 발전했습니다(업데이트하도록 프로그래밍하지 않는 한).

이 문서에서는 스크립트를 만들고 백그라운드 프로세스로 실행하는 방법을 설명합니다.

백그라운드 프로세스는 한 번 실행되고 그 후에는 컴퓨터를 시작할 때 자동으로 처리되고 컴퓨터를 끌 때 중지됩니다.

작업 관리자로 이동하거나 Python 명령을 사용하여 해당 ID를 사용하여 프로세스를 종료하여 백그라운드 프로세스를 중지할 수도 있습니다.

Windows의 Python 백그라운드 프로세스

Python 스크립트를 백그라운드 프로세스로 실행하는 방법에는 두 가지가 있습니다. 한 가지 방법은 Windows에서 백그라운드 프로세스로 Python 스크립트를 실행하는 데 사용되는 pythonw를 사용하는 것입니다.

pythonw를 사용하여 Python 스크립트를 백그라운드 프로세스로 실행합니다. Pythonw는 터미널 창을 사용하지 않고 Python 스크립트를 실행하는 데 사용됩니다.

터미널 창을 사용하지 않고 Python 스크립트를 실행하는 구문은 다음과 같습니다.

pythonw backgroundprocess.py

위의 명령에서 backgroundprocess.py를 백그라운드 프로세스로 실행하려는 파일 이름으로 바꿀 수 있습니다.

Python의 Linux 또는 Mac의 백그라운드 프로세스

Linux 또는 Mac에서 Python 스크립트를 백그라운드 프로세스로 실행하려면 명령 끝에 & 연산자를 사용하여 백그라운드 프로세스로 실행합니다.

Linux 또는 Mac에서 Python 스크립트를 백그라운드 프로세스로 실행하는 구문은 다음과 같습니다.

# python
python backgroundprocess.py &

위의 명령에서 backgroundprocess.py를 백그라운드 프로세스로 실행하려는 파일 이름으로 바꿀 수 있습니다.

스크립트가 백그라운드 프로세스로 실행되면 프로세스 ID를 확인하여 원할 때마다 백그라운드 프로세스를 중지할 수 있습니다. Windows에서 다음 명령을 사용하여 방금 시작한 프로세스를 종료할 수 있습니다.

kill -9 {{process id}}

Linux 또는 Mac 장치에서 프로세스를 종료하려면 다음 명령을 실행할 수 있습니다.

kill -9 {{process id}} &

위의 명령에서 -9는 가능한 한 빨리 프로세스를 종료하고 싶다는 의미입니다. 따라서 이 명령을 사용하면 중괄호 안에 제공할 ID를 가진 프로세스가 종료됩니다.

이제 작동 방식을 확인하고 백그라운드 프로세스로 실행 중인 스크립트에 대한 업데이트를 얻고 싶은 중요한 스크립트를 생성한 경우 간단한 명령을 사용하여 해당 스크립트의 출력을 다른 파일 내부에 기록하거나 플러시할 수 있습니다. 명령.

백그라운드 프로세스의 출력을 기록하는 명령은 다음과 같습니다.

pythonw backgroundprocess.py > backgroundlog

Linux 또는 Mac 장치에서 백그라운드 프로세스의 출력을 기록하려면 아래 명령을 사용할 수 있습니다.

# python
python backgroundprocess.py > backgroundlog &

주목해야 할 한 가지 중요한 점은 백그라운드 프로세스가 생성하는 출력이 백그라운드 프로세스가 중지될 때까지 먼저 버퍼 메모리에 저장된다는 것입니다. 따라서 프로세스를 중지한 후에만 백그라운드 프로세스에서 출력의 로그 또는 플러시를 가져올 수 있습니다.

그러나 일부 데이터가 손실될 위험이 있기 때문에 백그라운드 프로세스를 중지할 수 없다면 어떻게 해야 할까요? 출력을 먼저 버퍼 메모리에 저장하지 않고 파일에 직접 기록하는 또 다른 방법이 있습니다.

다음 명령을 사용할 수 있습니다.

pythonw -u backgroundprocess.py > backgroundlog

출력을 파일에 직접 기록하려면 아래와 같이 Linux 또는 Mac 장치에서 이 명령을 사용할 수 있습니다.

# python
python -u backgroundprocess.py > backgroundlog &

위의 명령은 이제 backgroundlog 파일에 출력을 직접 추가합니다. 그러나 출력을 얻으려면 여전히 터미널을 열어 두어야 합니다.

백그라운드 프로세스가 완료되기 전에 터미널을 닫으면 모든 프로세스가 중지됩니다. 실행 중이던 모든 프로세스가 중단됩니다.

Python에는 항상 모든 종류의 문제에 대한 솔루션이 있습니다. nohup이라는 또 다른 명령이 있습니다.

이 명령은 백그라운드 프로세스가 간섭 없이 완료되었는지 확인합니다.

상위 터미널을 닫아도 백그라운드 프로세스가 계속 작동하는지 확인할 수 있습니다. nohup 명령을 사용하는 구문은 다음과 같습니다.

nohup python -u backgroundprocess.py

위의 예는 필요할 때마다 확인하기 위해 출력을 다른 파일에 기록하는 것을 잊었음을 보여줍니다. 우리는 백그라운드 프로세스가 실행되는 동안 nohup 명령이 자동으로 로그를 생성하고 파일에 저장하여 모든 레코드를 볼 수 있다는 사실을 잊지 않았습니다.

nohup 명령은 모든 로그를 nohup.out 파일에 저장합니다. 이 프로세스를 종료하려면 위에서 사용한 kill 명령을 사용하여 이 프로세스를 쉽게 종료할 수 있습니다.

그러나 삭제하려는 프로세스의 ID가 기억나지 않는 경우 다른 명령을 사용하여 백그라운드 프로세스로 실행 중인 파일의 이름을 가져올 수 있습니다. 그리고 프로세스 ID를 찾아 kill 명령을 사용하여 프로세스를 종료합니다.

이 명령의 구문은 다음과 같습니다.

ps ax | grep backgroundprocess.py
Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

관련 문장 - Python Process