2012-02-19 26 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