通过子进程关闭PC后会发生什么?

时间:2019-04-27 17:03:24

标签: python multithreading subprocess task shutdown

我尝试关闭PC,然后在LAN上重新启动。

获得命令之一(关闭或重新启动)时,我执行以下命令之一:

subprocess.call(["shutdown", "-f", "-s", "-y"]) # Turn off

subprocess.call(["shutdown", "-f", "-r", "-t", "-c", "-y"]) # Restart

我想通知对方是否成功启动了该过程以及PC是否处于所需状态。

我知道可以执行一项功能,该功能将在执行命令几秒钟后检查PC是否还处于活动状态(这是一个很好的主意),但是又怎么知道需要几秒钟呢?而且,如果在发送一条消息指出PC仍在运行时会关闭PC,该怎么办?

我很好奇-执行这些命令后会发生什么?脚本会一直运行直到任务管理器将其杀死吗?命令后它会立即停止运行吗?

1 个答案:

答案 0 :(得分:1)

诸如shutdown之类的程序仅向init发送消息(或任何现代替代方法)并立即退出;接下来要做什么。 Unix的典型行为是首先关闭诸如SSH服务器之类的服务器(这可能不会杀死您与计算机的连接),然后将SIGTERM发送给所有进程,等待几秒钟(通常是5秒)以使信号处理程序运行,然后将SIGKILL发送给任何幸存者。最后,文件系统被卸载,并且硬件停止或重新启动。

虽然不能保证第一阶段花费的时间足以让您报告成功执行shutdown的情况,但通常可以;如果有问题,您可以赶快去找SIGTERM,让自己多花几秒钟的时间来传达消息。