如何从python进程获取原始命令行?

时间:2016-01-19 21:20:28

标签: python python-2.7 psutil

import psutil

for p in psutil.process_iter():
    if p.name() == 'foo':
        print p.cmdline()
        print ' '.join(p.cmdline())

PROCESS:
   foo -p "Hello World"
RESULT:
   ['foo', '-p', 'Hello World']
   foo -p Hello World

我希望获得foo -p "Hello World"中的流程的原始命令行,我尝试使用cmdline(),但它提供了参数标记化,我不感兴趣,并加入它们从结果的第二次印刷中可以看出,它不会一直产生预期的结果。

有没有办法以便携方式实现这一目标(可能使用其他库或以不同方式执行)?

修改

这是为了与已存储的命令进行比较。我的问题的另一个解决方案可能是,如果我可以获得静态命令字符串(' '.join)而没有args周围的引号来进行比较,那么只需foo -p "Hello World"即可。意思是,如果有一个函数执行了psutil正在执行的shell参数标记化,它将解决我的命令比较问题。

2 个答案:

答案 0 :(得分:0)

使用shlex.quote会将数组重组为shell命令行,写入空格和其他特殊字符。

答案 1 :(得分:0)

通过一些工作,您可以在2.7中使用Lib /管道。 https://docs.python.org/2/library/pipes.html