import subprocess
proc = subprocess.Popen(['systemctl', 'reload', 'postgresql-9.6.service'], stdout=subprocess.PIPE, shell=True)
(db_cmd, err) = proc.communicate()
print (db_cmd)
我正在尝试使用 python 3 运行 systemctl reload postgresql-9.6.service 但我无法获得输出。我得到的输出如下:
重新加载:systemctl:找不到命令 b''
最佳答案
首先:阅读文档:Subprocess module Python 3 . 您输错了 import 语句:它应该是:“import subprocess”。
使用sudo来执行你写的程序:sudo python/full/path/to/your/script
。
然后:如果您编写 db_cmd = proc.communicate()[0]
会更符合 pythonic,因为这样您只创建您使用的变量。
最后,您的错误表明您在处理 systemctl 命令时出了点问题。特别是它似乎缺少重新加载命令。尝试使用重启。
另外:这个问题与How to use subprocess重复.
关于python-3.x - 如何在python3中使用子进程编写命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623316/