0
$ ps aux | grep file1.py
xyz    6103  0.0  0.1  33476  6480 pts/1    S+   12:00   0:00 python file1.py
xyz    6188  0.0  0.1  33476  6472 pts/2    S+   12:05   0:00 python file1.py
xyz    7294  0.0  0.0   8956   872 pts/4    S+   12:49   0:00 grep --color=auto file1.py

进程 6103 已在 12:00 开始,5 分钟后进程 6188 开始。我需要找出两个进程 6103,6188

pid_finder.py

import psutil

PROCNAME = "file1.py"

process = []
for proc in psutil.process_iter():
    if proc.name == PROCNAME:
        print proc

但是上面的脚本什么也没打印出来。“psutil”模块可以有其他选项来查找脚本进程的pid。

psutil.test() 给出了以下 o/p ...

xyz      6103  0.0  0.2   33476    6480 /dev/pts/1    13:23   30:00  python
xyz      6188  0.0  0.2   33476    6480 /dev/pts/2    13:23   30:00  python
xyz      8831  0.0  1.0  430612   39796 ?             13:31   30:03  gedit
xyz      8833  0.0    ?   14540     808 ?             13:31   30:00  gnome-pty-helper
xyz      8835  0.0  0.1   23636    5008 /dev/pts/5    13:31   30:00  bash
xyz      9367  0.0  0.2   51580    7740 /dev/pts/4    13:42   30:00  python
4

2 回答 2

1

如果您不担心os.popen()

#!/usr/bin/python
import os
PROCNAME = "file1.py"
pids = []
for proc_data in os.popen('/bin/ps -eo pid,comm,args'):
    bits = proc_data.strip().split()
    (pid, comm ) = bits[0:2]
    args = " ".join( bits[3:] )
    if args == PROCNAME:
        pids.append( pid )

print pids

这应该让您根据流程的参数找到东西。

如果需要,您可以更改它,以便 comm 和 args 在其中一个字符串。

    pid = bits[0]
    comm_and_args = " ".join( bits[1:] )
于 2012-10-18T08:29:20.453 回答
0

请继续阅读pidof

man pidof
于 2012-10-18T07:13:55.963 回答