我正在尝试调用子过程,这是子过程:
def data_PID(pid):
print(pid)
pid = str(pid)
data = subprocess.getoutput("ps -l | grep pid ")
print(data)
PID是由控制台问的,我想在子过程中搜索使用该PID的值。getOutput,但我不知道该怎么做4567,我希望子进程制作" PS -L | GREP 4567"如果有人知道该怎么做,我将感谢他。
我同意@dbeer。如果您想在此处使用psutil,则该示例:
import psutil
def get_process_by_pid(pid: int):
process = None
for p in psutil.process_iter():
if p.pid == pid:
process = p
break
return process
然后,您可以使用process
对象并获取所有过程信息,如果您想要DICE结构中的信息,请致电process.as_dict()
。
通常,当可用API时使用子过程是一个坏主意。PSUTIL模块可用于获取您要寻找的信息。这样做比启动单独的过程并解析输出要好得多,因为:
- 它可以节省您的解析逻辑,通常很难维护。
- 它可以避免通过启动另一个过程引入故障的其他可能性。
- 它更快。
但是,要回答您的第一个问题,如果您只想将一个变量写入字符串:
:cmd = "ps -l | grep %s" % (pid)
data = subprocess.getoutput(cmd)