2017-10-27 11 views
0

내 Python 스크립트에서 otherscript.py이 현재 (Linux) 시스템에서 실행되고 있는지 확인하고 싶습니다. psutil 라이브러리는 좋은 해결책처럼 보였다 :python 명령으로 프로세스 찾기

import psutil 
proc_iter = psutil.process_iter(attrs=["name"]) 
other_script_running = any("otherscript.py" in p.info["name"] for p in proc_iter) 

문제는 p.info["name"]는 프로세스가 아닌 전체 명령의 실행 파일의 이름을 제공한다는 것입니다. 따라서 python otherscript.py이 시스템에서 실행될 경우 p.info["name"]은 해당 프로세스에 대해 python이되고 내 스크립트는 otherscript.py이 실행중인 스크립트인지 여부를 감지 할 수 없습니다.

psutil 또는 다른 라이브러리를 사용하여이 검사를 수행하는 간단한 방법이 있습니까? 나는 서브 프로세스로 ps 명령을 실행할 수 있고 출력에서 ​​otherscript.py을 찾을 수 있다고 생각하지만, 좀 더 우아한 해결책을 원합니다. 이 이름(),있는 CmdLine()와 EXE를() 검사 두 번째 예를 살펴

import psutil 
proc_iter = psutil.process_iter(attrs=["pid", "name", "cmdline"]) 
other_script_running = any("otherscript.py" in p.info["cmdline"] for p in proc_iter) 

답변

1

이 궁금하다. 참고로

:

import os 
import psutil 

def find_procs_by_name(name): 
    "Return a list of processes matching 'name'." 
    ls = [] 
    for p in psutil.process_iter(attrs=["name", "exe", "cmdline"]): 
     if name == p.info['name'] or \ 
       p.info['exe'] and os.path.basename(p.info['exe']) == name or \ 
       p.info['cmdline'] and p.info['cmdline'][0] == name: 
      ls.append(p) 
    return ls