繁体   English   中英

LaunchDaemon处理系统关闭 - 没有SIGTERM?

[英]LaunchDaemon handling system shutdown - no SIGTERM?

我写了一个小的python脚本,我作为LaunchDaemon运行,以记录远程数据库的启动/关闭时间。 当脚本启动时,它会记录启动时间,然后暂停并等待捕获SIGTERM以记录关闭时间。 几乎相同的工作流程用作登录/注销时间的LaunchAgent。

然而,Apple的突然终止机制似乎正在扼杀事物。 看来,当机器关闭或重启时, launchd仅发送SIGKILL信号到launchdaemons和launchagents,这是不能被处理。 我在技术方面可能是错的,但这基本上就是我所经历的......

使用launchctl手动加载/卸载守护程序会触发SIGTERM处理程序。 但是,在发生实际系统关闭时,不会触发相同的代码。

有没有人建议如何预防SIGKILL

如果我读这个权利,它不应该守护程序使用突然终止,除非你有<key>EnableTransactions</key><true/>中的launchd plist中。 但是文档有点模糊,所以我也尝试将<key>EnableTransactions</key><false/>到plist中,或者如果不起作用,请从程序中调用vproc_transaction_begin(我假设你可以调用它)从python,但我不知道机制)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM