系统关闭时启动守护程序处理 - 没有SIGTERM?

2024-09-27 22:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

然而,苹果的突然终止机制似乎给事情带来了麻烦。当机器关闭或重新启动时,launchd只向启动守护进程和启动代理发送一个SIGKILL信号,这是无法处理的。我可能在技术上是错的,但这正是我所经历的。。在

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

有人有关于如何防止SIGKILL的建议吗?在


Tags: 苹果脚本机器数据库代理远程进程记录
1条回答
网友
1楼 · 发布于 2024-09-27 22:35:25

如果我读的是this对的话,它不应该在守护进程上使用突然终止,除非在启动plist中有<key>EnableTransactions</key><true/>。但是文档有点模糊,所以我也尝试在plist中添加<key>EnableTransactions</key><false/>,或者如果这不起作用,请从程序调用vproc_transaction_begin(我假设您可以从python调用它,但我不知道机制)。在

相关问题 更多 >

    热门问题