2012-02-19 59 views
0

我试图找到与python脚本Linux操作系统的进程ID,具有下列内容:从POPEN输出转换为数组

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的脚本不起作用相同 程序退出在由于INT()函数 '123 \ N146 \ n' 为不是10基于INT

然后我尝试以下: PID = Pid.read()分裂()
print len(pid)
print pid [0]

它似乎与python命令行一起工作,并形成一个pid = ['123','156']的数组,但不知何故,它在脚本中不起作用。

有什么建议吗?谢谢

+0

您可以发布您使用过的(并且没有工作)的修订脚本吗?它输出什么呢? – Dogbert 2012-02-19 08:57:07

回答

0

您是否想知道您自己的进程ID?如果是这样,使用os.getpid()

0

你可以使用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.namep.cmdline和各种比较与procname得到你需要在你的具体情况。

而且还有os.getpid()返回当前进程ID。

+0

谢谢大家。我试图追踪一些特定的进程,并且subproces.check_output()对我很好。此外,一个伟大的提醒使用地图().. :) – 2012-02-20 08:54:29