Mik*_*keZ 4 linux pdf r batch-file cluster-computing
我在Linux集群上运行R程序,因为它对我的处理器要求很高.我的程序旨在将多个(大约15个)绘图作为PDF输出到程序收集其输入的文件夹中.
我希望我的程序在后台运行,并在我退出群集时继续运行.
首先,我试过这个:
cd /Users/The/Folder/With/My/RScript #changed working directory
nohup ./BatchProgram.R &
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为它将输出附加到一个名为的文件nohup.out,并且没有输出我需要的任何PDF.
接下来我尝试了这个:
cd /Users/The/Folder/With/My/RScript #changed working directory
R #to run R
source(‘BatchProgram.R’) #to run my program
Run Code Online (Sandbox Code Playgroud)
这给了我想要的输出,但没有在后台运行程序(当我退出集群时会停止).
有人可以告诉我如何获取第二块代码的输出,同时在后台运行程序并导致它甚至在我注销linux集群后继续运行(如第一块代码)?
非常感谢!
nohup在后台运行命令,使其忽略告诉它停止的信号(例如,当您注销时),并将输出重定向到文件.但它必须是一个可执行命令:您可能有错误消息nohup.out告诉您BatchProgram.R无法运行.
以下应该有效:
nohup Rscript ./BatchProgram.R &
Run Code Online (Sandbox Code Playgroud)
该解决方案已经过测试,您也可以尝试制作它的“nohup”版本,但是将呈现的内容非常适合我。制作 bash 脚本如下(例如 run_R.sh):
#!/bin/sh
R CMD BATCH --slave ./_your_R_script_name.R &
exit 0
Run Code Online (Sandbox Code Playgroud)
然后,使其可运行
chmod +x run_R.sh
Run Code Online (Sandbox Code Playgroud)
并运行文件,例如
./run_R.sh
Run Code Online (Sandbox Code Playgroud)
有时你只能看到闪烁的光标(取决于你正在使用的 Linux 发行版),但只需按“Enter”即可继续