我正在编写一个python脚本,它需要读取iotop的输出。但是stdout似乎是空白的。我们的目标是将iotop的输出存储为一个字符串,供我以后搜索和使用。它运行在带有python 3.6的Ubuntu 16.04上。我使用"sudo python3.6iotop“调用脚本,因为script.py需要管理员权限。
p = subprocess.Popen(['iotop','-b','-n','1','-a','-k'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
try:
outs, errs = p.communicate(timeout=15)
except subprocess.TimeoutExpired:
p.kill()
outs, errs = p.communicate()
returncode=p.returncode
print(outs.decode('UTF-8'))在bash终端中运行此命令会得到预期的输出。我做错了什么?
sudo iotop -b -n 1 -a -k发布于 2020-01-05 18:38:13
删除shell=True使代码以我想要的方式工作。
p = subprocess.Popen(['iotop','-b','-n','1','-a','-k'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)发布于 2019-12-31 11:27:34
"-n"和"1"应该是单独的列表元素
https://stackoverflow.com/questions/59539216
复制相似问题