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''
答案 0 :(得分:1)
首先:阅读文档:Subprocess module Python 3。 您输错了导入语句:它应该是:“ import subprocess”。
使用sudo执行您编写的程序:sudo python /full/path/to/your/script
。
然后:如果您写db_cmd = proc.communicate()[0]
,则更Python化,因为以此方式,您仅创建要使用的变量。
最后,您的错误表明在处理systemctl命令时出现了问题。特别是它似乎缺少reload命令。尝试使用重新启动。
此外:此问题与How to use subprocess相同。
答案 1 :(得分:0)
没有称为process的模块。 您应该将'process'替换为'subprocess',您可能会像这样:
import subprocess
proc = subprocess.Popen(['systemctl', 'reload', 'postgresql-9.6.service'], stdout=subprocess.PIPE, shell=True)
(db_cmd, err) = proc.communicate()
print (db_cmd)
但我收到此错误:
'systemctl' is not recognized as an internal or external command,
operable program or batch file.
此错误表示没有名为“ systemctl”的命令,请尝试对其进行检查。
对不起,也许任何人都可以为您提供更多帮助,但是抱歉,我所知道的一切。