是否有办法从 R 中的 shell 捕获 SIGINT 或 SIGTERM,以便我可以尝试执行一些优雅的退出代码?
到目前为止,我在搜索中还没有找到任何东西。
自从你问以来已经有一段时间了,与此同时有人在一个包中解决了这个问题:
https://github.com/atheriel/sigterm
来自自述文件:
sigterm 是一个非常简单的包,它提供了一种方法来实现响应 SIGTERM 的此类操作:当加载包时,它将安装一个信号处理程序,以防止 R 立即退出。然后,用户可以定期检查是否已收到 SIGTERM 信号并做出适当响应。
这对我有用
tryCatch({
expr
}, interrupt = function(i) {
do cleanup...
})
这将捕获
SIGINT
,可以通过在 Dockerfile 中包含以下内容来在容器上下文中使用它
STOPSIGNAL SIGINT