当涉及“ $$”时,如何获取“ subprocess.check_output()”的输出?

时间:2019-08-17 00:28:20

标签: python bash subprocess

我想通过python获取执行ps -p $$ -oargs=的字符串输出。

当我尝试这样做时:

subprocess.check_output("ps -p $$ -oargs=", shell=True)

我得到“ ps -p 9017 -oargs =“,但是当我直接在外壳中尝试ps -p $$ -oargs=时,我得到“ -bash”。如何通过python获得“ -bash”?

1 个答案:

答案 0 :(得分:0)

这完全按照您的要求进行,过滤ps以仅使用运行它的Shell的PID来输出有关进程的信息(这就是$$的意思)。

如果您想要有关Python会话本身的信息,则需要传递Python进程本身的PID,例如(删除shell=True换行,因为此处$$不需要它):

subprocess.check_output(["ps", "-p", str(os.getpid()), "-oargs="])

请确保位于文件顶部的import os,以便您可以访问os.getpid