python os.system block backward命令

时间:2014-10-30 03:00:55

标签: 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 &')

1 个答案:

答案 0 :(得分:0)

最近没有搞乱代码中运行的程序。但只需使用subprocess.call() 您还需要root权限才能使用shutdown。

# 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 DocumentationSpawn()类与subprocess.call()类似。阅读Spawn() Class Docs

(OFF主题:pxssh内置pexpect模块。这是一个非常好的创建小型管理脚本的工具。