如何让R在被杀时保存其状态?

时间:2015-05-13 18:19:48

标签: r

我想分配一些代码,这些代码将在R被杀死时运行,例如save(list=ls(),file="dump.RData")。我认为这是通过捕获信号,例如SIGTERM中提到的?conditions,但?conditions中来自shell的信号没有任何内容。

Ctrl-C确实提到了用户中断;你可以,例如使用withCallingHandlers( Sys.sleep(10), interrupt=function (e){cat("I saw that.\n")} )抓住{ "_id":"", "name":"", "ObjectArray":[{ "url":"", "value":"" }] } ,但这并不会抓住SIGTERM。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

确实,如果您将SIGUSR1发送到R进程,它将转储工作区并停止。在Linux上,您可以使用

执行此操作
kill -USR1 Rpid

其中Rpid是您要停止的R实例的进程ID。例如,您可以使用pgrep找到它。

如果R在终端中运行,您可以使用CTRL-Z中断它,然后键入

kill -USR1 %