목차
- 파이썬 pid 파일을 사용하여 파이썬 중복 실행 방지 예제 이전 포스팅 참고 학습
- 파이썬 프로세스 와치독 WatchDog 프로세스명으로 종료 감지 예제 이전 포스팅 참고 학습
- 파이썬 pyqt5 사용자 입력 Input 박스 UI 만들기 예제 이전 포스팅 참고 학습
- 파이썬 WatchDog 프로세스 종료 감지시 재시작 기능 구현 예제
- 파이썬 크롬 브라우저 종료 후 재실행 테스트
파이썬 pid 파일을 사용하여 파이썬 중복 실행 방지 예제 이전 포스팅 참고 학습
이전 포스팅에서는 파이썬에서 현재 실행중인 파이썬 프로세스의 pid를 작성하여 PID 파일을 생성하였습니다. 이후 새롭게 시작되는 파이썬 스크립트에서는 PID 파일을 읽고 해당 pid의 프로세스가 현재 살아있다면 즉시 종료시키는 기능을 구현하였습니다. 이를 통해 자기 자신이 중복 실행되는 것을 방지하였습니다. 이처럼 파이썬 스크립트에서 중복 실행 방지를 위해 PID 파일을 활용하는 예제가 궁금하시다면 아래 링크의 포스팅을 참고하여 학습해주세요.
2023.10.19 - [Python] - [Python/Linux] 파이썬 스크립트 중복 실행 방지 예제(pid 파일 활용)
파이썬 프로세스 와치독 WatchDog 프로세스명으로 종료 감지 예제 이전 포스팅 참고 학습
다음으로 이전 포스팅에서는 파이썬에서 프로세스 와치독 WatchDog 구현하는 예제에 대해 알아보았습니다. 첫번째로 와치독에서 특정 프로세스를 계속 감시하고 있다가 종료되는 시점을 파악하여 메세지를 출력하는 예제를 알아보았습니다. 오늘 예제에서는 이를 활용하여 프로세스가 종료되었다면 새로 다시 실행시키는 프로세스 재시작 기능을 구현하는 방법에 대해 알아보도록 하겠습니다. 만약 이전 포스팅을 안읽고 와치독 WatchDog 파이썬 스크립트를 작성하지 않으셨다면 아래 링크를 참고하여 먼저 학습해주세요.
2023.10.19 - [Python] - [Python/Linux] 파이썬 프로세스 와치독 WatchDog 만들기 예제 - 1(프로세스명으로 특정 프로세스 종료 감시)
파이썬 pyqt5 사용자 입력 Input 박스 UI 만들기 예제 이전 포스팅 참고 학습
마지막으로 이전 포스팅에서는 pyqt5 모듈을 사용하여 파이썬에서 사용자가 입력할 수 있는 InputBox UI를 구성하는 방법에 대해 알아보았습니다. QT 모듈은 그래픽으로 여러가지 도구를 표현할 수 있는 모듈입니다. 이렇게 사용자에게 문자열을 입력받아 다른 명령에 전달하는 예제를 구현할 수 있습니다. 또한 버튼 UI 등을 생성하여 화면에 있는 버튼을 눌러 이벤트를 발생시키는 것도 가능합니다. 만약 파이썬에서 사용자 입력을 받는 InputBox UI 생성 방법이 궁금하시다면 아래 링크를 참고해주세요.
2023.09.12 - [Python] - [Python] 파이썬 사용자 입력 Input 박스 UI, 버튼 UI 만들기 예제(pyqt5)
파이썬 WatchDog 프로세스 종료 감지시 재시작 기능 구현 예제
아래는 이전 포스팅에서 다룬 파이썬 스크립트로 작성한 와치독 WatchDog에서 특정 프로세스가 종료되었을 때 다시 프로세스를 재시작하는 예제 코드입니다.
import os
import psutil
import time
# 모니터링할 프로세스 이름
process_name = "chrome"
while True:
# 모든 프로세스 목록 가져오기
for process in psutil.process_iter(attrs=['name']):
if process.info['name'] == process_name:
# 프로세스가 실행 중인 경우
print(f"{process_name} 프로세스 실행 중")
break
else:
# 프로세스가 종료된 경우
print(f"{process_name} 프로세스가 종료되었습니다.")
# 주기적으로 체크 (예: 10초마다)
time.sleep(10)
파이썬 크롬 브라우저 종료 후 재실행 테스트
아래는 파이썬 와치독 WatchDog에서 크롬 브라우저가 종료되었을 때 자동으로 재시작 하는 예제입니다.
import os
import psutil
import time
# 모니터링할 프로세스 이름
process_name = "chrome"
# 크롬 브라우저 실행 명령
chrome_command = "google-chrome"
while True:
# 모든 프로세스 목록 가져오기
for process in psutil.process_iter(attrs=['name']):
if process.info['name'] == process_name:
# 프로세스가 실행 중인 경우
print(f"{process_name} 프로세스 실행 중")
break
else:
# 프로세스가 종료된 경우
print(f"{process_name} 프로세스가 종료되었습니다.")
# 크롬 브라우저 실행
os.system(chrome_command)
# 주기적으로 체크 (예: 10초마다)
time.sleep(10)