python os.system 阻止向后命令

标签 python linux os.system

我设置了一个计时器来监视这些代码。

def SwitchToDstSystem(SystemNo):
    grub_util.SwitchToSystem(SystemNo = SystemNo)
    logger.debug("switch to %s"%SystemNo)
    time.sleep(10)
    os.system('/usr/bin/setsid /sbin/shutdown -r now &')
    logger.debug("Reboot in 10 seconds")
    time.sleep(10)
def UpgradeGsp(StatusDict):
    SwitchToDstSystem(SystemNo)
while True:
    UpgradeGsp(SystemNo)

有时它会很快完成,但有时会超时。 我有时想os.system应该被阻止。

我的服务器运行mysql,有人知道为什么os.system被屏蔽了?

os.system('/usr/bin/setsid /sbin/shutdown -r now &')

最佳答案

最近没有搞乱从代码运行程序。但只需使用 subprocess.call() 即可 我认为您还需要 root 权限才能使用关闭功能。

# Code not tested. If this doesn't work try the `pexpect` module
# to expect the password prompt.
import subprocess
subprocess.call('sudo shutdown -r now')

我可以写出完整的工作代码,但这需要一些时间。我认为你应该完成你的问题,完成挑战总是很有趣的。

我实际上只使用子进程来进行程序调用或系统信息。

Pexpect 旨在通过命令行与程序进行通信。 尽管您需要添加自己的期望。

Pexpect API Documentation :Spawn() 类类似于 subprocess.call()。阅读 Spawn() Class Docs

(题外话:有一个由 pexpect 构建的 pxssh 模块。一个非常好的创建小型管理脚本的工具。

关于python os.system 阻止向后命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644338/

相关文章:

linux - SMTP 警报不适用于 keepalived

Python try block 不捕获 os.system 异常

python - 我是否正确使用 os.system ?我的应用程序将不再打开

python - 从特定目录使用 Python 运行 cmd 命令

python - 使用装饰器对自定义对象进行编码 - Python

python - 在 Cloudformation 中使用时无法从 S3 下载引导文件

python - 在 python 中创建 CSV 文件,它将列出目录中带有服务器名称的所有文件

python - 构建一个 conda 包,从 env.yaml 文件创建一个 conda 环境

java - python import 相当于 Java 中的导入吗?

python - 使用 python 和 conda 为 openCV 扩展 GUI