首页 > 解决方案 > 当涉及“$$”时,如何获得“subprocess.check_output()”的输出?

问题描述

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

当我尝试这个时:

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

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

标签: pythonbashsubprocess

解决方案


这正是您要求它做的事情,过滤ps以仅使用运行它的 shell 的 PID 输出有关进程的信息(这就是$$意思)。

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

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

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


推荐阅读