4

我在 linux 集群上运行 R 程序,因为它对我的处理器要求很高。我的程序旨在将多个(大约 15 个)绘图作为 PDF 输出到程序收集其输入的文件夹中。

我希望我的程序在后台运行,并在我退出集群时继续运行。

首先,我试过这个:

cd /Users/The/Folder/With/My/RScript #changed working directory
nohup ./BatchProgram.R &

但是,这不起作用,因为它将输出附加到一个名为 的文件nohup.out中,并且没有输出我需要的任何 PDF。

接下来我尝试了这个:

cd /Users/The/Folder/With/My/RScript #changed working directory
R #to run R
source(‘BatchProgram.R’) #to run my program

这给了我想要的输出,但没有在后台运行程序(并且在我退出集群时会停止)。

有人可以告诉我如何获得第二个代码块的输出,同时在后台运行程序并导致它在我注销 linux 集群后继续运行(如第一个代码块)?

非常感谢!

4

2 回答 2

9

nohup在后台运行命令,使其忽略告诉它停止的信号(例如,当您注销时),并将输出重定向到文件。但它必须是一个可执行命令:您可能有错误消息nohup.out告诉您BatchProgram.R无法运行。

以下应该有效:

nohup Rscript ./BatchProgram.R &
于 2012-07-24T00:21:45.863 回答
4

该解决方案已经过测试,您也可以尝试制作它的“nohup”版本,但是将呈现的内容非常适合我。制作 bash 脚本如下(例如 run_R.sh):

#!/bin/sh
R CMD BATCH --slave ./_your_R_script_name.R &
exit 0

然后,使其可运行

chmod +x run_R.sh

并像运行文件一样,

./run_R.sh

有时您只能看到闪烁的光标(取决于您正在使用的 linux 发行版),但只需按“enter”即可继续

于 2012-07-23T20:29:52.483 回答