python, 프로그램(프로세스) 실행 확인 및 PID 검사 예제

 

#---------------------------------------------------
# 프로그램 이름(일부 포함)으로 실행 확인 및 PID 검색/출력 
#---------------------------------------------------
import psutil
import time
import os

# ------------------------------
# 이름(일부분 포함)이 같은 프로세스가 있으면 True 반환 
def checkIfProcessRunning(processName):
  #Iterate over the all the running process
  for proc in psutil.process_iter():
    try:
      # Check if process name contains the given name string.
      if processName.lower() in proc.name().lower():
        return True
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
      pass
  return False

# ------------------------------
# 프로세스 이름 일부분으로 모든 대상 찾기
def findProcessIdByName(processName):
  listOfProcessObjects = []

  for proc in psutil.process_iter():
    try:
      pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time'])
     
      if processName.lower() in pinfo['name'].lower() :
        listOfProcessObjects.append(pinfo)
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
      pass
    
  return listOfProcessObjects


# ------------------------------
# MAIN Program

print('My PID:', os.getpid())  # 현재 프로세스 PID 출력 

program_name = 'python'

EXIST = checkIfProcessRunning(program_name)

if EXIST:
    print(f'{program_name} 프로세스가 동작 중입니다.')
else:
    print(f'{program_name} 프로세스가 없습니다.')

if EXIST:        
  listOfProcessIds = findProcessIdByName(program_name)

  if len(listOfProcessIds) > 0:
    print('프로세스 정보')
    for elem in listOfProcessIds:
      processID = elem['pid']
      processName = elem['name']
      processCreationTime =  time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(elem['create_time']))
      print(processID, processName, processCreationTime)
  else:
    print('해당하는 프로세스 정보 없음')

반응형

+ Recent posts