【发布时间】:2019-06-03 19:33:47
【问题描述】:
我想使用 subprocess.call 重新启动 nginx。我正在使用
subprocess.call("sudo systemctl restart nginx",shell=True)
但是,当使用shell=True 时,该命令没有执行任何操作,而我使用shell=False 它说没有目录或文件“命令我在按钮中实现了 subprocess.call。
【问题讨论】:
-
不过,我们不知道为什么会失败。
subprocess.check_call(["sudo", "-l"])成功了吗?如果前面有 GUI,sudo没有好办法向你询问密码。 -
@tripleee 我尝试了你给我的命令,服务器没有响应这样的文件或目录“sudo”。每次我放下 shell=False 他们总是不返回这样的文件或目录。我试图调用 ("./file.sh",shell=True) 我制作的包含重启命令的 shellscript,它返回非零退出状态 127。当使用 shell=False 时,它不返回这样的文件...
-
如果您没有安装
sudo命令,这当然可以解释为什么您无法运行此代码。 -
同样,对于
shell=False,您需要自己将其拆分为一个列表。但是标记./不是带有或不带有 shell 的有效语法。你的意思是"./file.sh"?使用shell=False运行它的方法是subprocess.call(["./file.sh"]);请注意我是如何手动将命令转换为令牌列表的(当然,因为只有一个令牌,所以列表也只是一项)。 -
@tripleee 对不起,现在我明白了。我试了一下,它没有返回错误,但服务本身没有重新启动。
标签: python linux nginx subprocess