我设置了一个计时器来监控这些代码。
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 &')
答案 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 Documentation:Spawn()
类与subprocess.call()
类似。阅读Spawn() Class Docs。
(OFF主题:pxssh
内置pexpect
模块。这是一个非常好的创建小型管理脚本的工具。