gpt4 book ai didi

python - 如何使用 subprocess.call 在 linux 中重启服务?

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:39 24 4
gpt4 key购买 nike

我想使用 subprocess.call 重启 nginx。我正在使用

subprocess.call("sudo systemctl restart nginx",shell=True)

但是,当使用 shell=True 时命令没有做任何事情,而我使用 shell=False 它说没有目录或文件“我执行的命令subprocess.call 在一个按钮中。

最佳答案

shell=Trueshell=False 在类 Unix 系统上的区别在于 shell 负责分解 exec< 的命令行,而如果您没有 shell,则必须自己做。

shell 在这里没有任何好处,因此您可以安全地删除它。

subprocess.call(["sudo", "systemctl", "restart", "nginx"])

所以在一般情况下,任何看起来像的东西

subprocess.something("blah 'blah' \"blah\"", shell=True)

需要转换成没有 shell 引用的列表才能在没有 shell=True 的情况下运行它:

subprocess.something(['blah', 'blah', "blah"])

当然,任何特定于 shell 的东西(重定向、管道、globbing 等)都需要用 native Python 代码替换。

更多详情请访问 Actual meaning of 'shell=True' in subprocessRunning Bash commands in Python

如果您的原始代码不起作用,那么这也可能不起作用。

关于python - 如何使用 subprocess.call 在 linux 中重启服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com