【发布时间】:2011-11-23 20:52:45
【问题描述】:
我编写了一个小型 python 脚本,我将其作为 LaunchDaemon 运行,以记录远程数据库的启动/关闭时间。当脚本启动时,它会记录启动时间,然后暂停并等待捕获 SIGTERM 以记录关闭时间。几乎相同的工作流程被用作登录/注销时间的 LaunchAgent。
但是,Apple 的突然终止机制似乎正在给事情带来麻烦。看来,当机器关闭或重新启动时,launchd 只是向启动守护进程和启动代理发送SIGKILL 信号,这是无法处理的。我可能在技术上错了,但这基本上就是我所经历的......
使用 launchctl 手动加载/卸载守护程序会触发 SIGTERM 处理程序。但是,当真正的系统关闭发生时,不会触发相同的代码。
有人对如何防止SIGKILL 提出建议吗?
【问题讨论】: