[英]convert the output from Popen to an array
我尝试使用以下脚本在Linux OS上找到进程ID:
PID = Popen("ps -elf | grep <proc_name>| grep -v grep | awk '{print $4}'", shell=True, stdout=PIPE).stdout
pid = PID.read()
pid=int(pid)
但是,如果存在多个具有相同PID的PID,则该脚本不起作用。由于'123 \\ n146 \\ n'不是基于10的int,程序在int()函数处退出
然后,我尝试了以下操作:pid = Pid.read()。split()
打印len(pid)
打印pid [0]
它似乎可以与python命令行一起使用,并形成pid = ['123','156']的数组,但是以某种方式,它在脚本中不起作用。
有什么建议吗? 谢谢
您是否要找出自己的进程ID? 如果是这样,请使用os.getpid()
你可以使用subprocess.check_output()
和str.splitlines()
from subprocess import check_output as qx
pids = map(int, qx(["pgrep", procname]).splitlines())
要执行此操作而无需外部进程,可以尝试psutil
:
import psutil # pip install psutil
pids = [p.pid for p in psutil.process_iter() if p.name == procname]
使用p.name
, p.cmdline
实验,并使用procname
进行各种比较,以获取特定情况下需要的内容。
还有os.getpid()
返回当前的进程ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.