2012-07-23 120 views
4

我在Linux集羣上運行R程序,因爲它對我的處理器要求非常高。我的程序旨在將多個(大約15個)圖作爲PDF輸出到程序收集其輸入的文件夾中。在Linux上以批處理模式運行R:輸出問題

我想我的程序在後臺運行,並繼續運行,當我退出集羣。

首先,我想這一點:

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羣集後也能繼續運行(如第一個塊的代碼)?

非常感謝!

+0

是'tmux'不是一種選擇? – Justin 2012-07-23 20:20:54

回答

9

nohup在後臺運行命令,使其忽略告知其停止的信號(例如,註銷時),並將輸出重定向到文件。 但它必須是一個可執行的命令:您可能在nohup.out中有錯誤消息,告訴您無法運行BatchProgram.R

下面應該工作:

nohup Rscript ./BatchProgram.R & 
+0

這工作很好,謝謝,文森特!出於好奇 - 「Rscript」命令實際上做了什麼? – MikeZ 2012-07-24 13:37:13

+2

它只是運行一個R腳本,但沒有交互式解釋器。它可以在命令行'Rscript my_script.R'或腳本的第一行'#!/ usr/bin/Rscript'中使用,以便能夠直接運行它,如./my_script。 R'(在這種情況下,您還需要使用'chmod + x'使腳本可執行)。它幾乎等同於'R CMD BATCH',但不需要其他選項(在另一個答案中爲'--slave')。 – 2012-07-24 14:01:24

3

測試溶液中,u可以嘗試也使得它的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」鍵繼續

+0

+1。我更喜歡使用'R CMD BATCH',因爲它將所有內容輸出到「日誌」文件,也就是'.Rout'文件。 – Banjer 2014-08-25 13:40:55