如何使用键盘命令中断R中正在运行的代码?


81

谁能告诉我如何中断R中正在运行的脚本?

假设我遇到了无限循环或其他问题,并且我想停止脚本的运行。是否有执行该操作的键盘命令?

如果有帮助,在Python中为Ctrl + c。我在R中尝试过,但是没有用:)。

我对这个看似简单的问题做了一些搜索,但找不到答案。

提前致谢。


4
在Rgui中,如果R控制台具有焦点,则ESC或Alt-M [Enter]或单击红色的停止八边形将停止当前计算
Henry

1
我认为这还取决于您使用的是哪种操作系统(Wondows,Mac OS,Linux)以及如何运行R脚本(来自R gui,Emacs等)。
曼努埃尔·拉蒙

6
ESC也可以在R Studio中运行(至少在运行Windows时)。
墨菲船长

2
您应该在原始帖子中提到Windows上的内容。尝试提及所有相关信息。你还应该提到你是如何运行R.
王旭

Answers:


63

自我回答(他人评论和答案的摘要):

  • 在中RStudioEsc可在Windows,Mac和ubuntu上使用(并且我也可以在其他Linux发行版上猜测)。

  • 如果该进程在ubuntu shell中运行(并且不是R特定的),例如使用:

    Rscript my_file.R
    

    Ctrl + c 杀死进程

    Ctrl + z 暂停过程

  • 在R shell中,Ctrl + C杀死可以帮助您逃脱它


17
不幸的是,在RStudio中,Esc无法中断占用大量内存的进程。
Orion

14

Control-C可以工作,尽管取决于过程在做什么,它可能不会马上消失。

如果您使用的是基于UNIX的系统,那么我要做的一件事是control-z返回命令行提示符,然后对进程ID发出“ kill”。


6

试用Ctrl + z,但它将终止该进程,而不是中止该进程。


3
我尝试了Ctrl + z,但它也不起作用。我在Windows上,顺便说一句。不过谢谢
Akavall 2011年

是的,这不是键盘中断,不妨关闭终端窗口
altabq

1

我知道这很老,但遇到了同样的问题。我在Mac / Ubuntu上,来回切换。我发现,仅向主R进程发送一个简单的中断信号就可以满足您的需求。我已经运行了长达24小时的脚本,并且信号中断效果很好。您应该能够在终端中运行kill:

$ kill -2 pid

您可以通过运行找到pid

$ps aux | grep exec/R

由于我从没来过Windows,所以不确定Windows,但是我无法想象在命令提示符/任务管理器中没有这样的选择

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.