2012-09-18 133 views
1

我有一個R腳本,可以從R或命令行運行得很好。它的操作非常簡單。它只需要一些定期更新的數據,進行一些分析,繪製一些圖並將其保存到磁盤。我想自動運行它,與數據更新同步,因此我試圖在cron作業下運行它。它一切都很好,直到它將圖像寫入磁盤。然後它告訴我它無法打開第一張圖片,並失敗。我嘗試了所有我能想到的東西:檢查運行目錄中的權限,確保cron正在運行,將我的cron命令從「R CMD BATCH」切換到「Rscript」。沒有任何工作。再次,腳本在R或命令行中運行得很好。任何人對我還能做什麼有什麼想法? (順便說一句,我也發現這個類似的問題在這個網站,但鑑於那裏的答案在我的具體情況沒有幫助。)cron無法運行R腳本

有問題的代碼似乎是:

png(file=nd_pic_image_names[1],height=720,width=720) 

錯誤返回的是:

Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize, : 
unable to start device PNG 
Calls: png 
In addition: Warning message: 
In png(file = nd_pic_image_names[n], height = 720, width = 720) : 
unable to open connection to X11 display '' 
Execution halted 

我不明白「X11」的東西。我沒有在代碼中的任何地方引用X11(),並且我不打算在打開(或試圖打開)我的PNG文件之前繪圖。謝謝。

+0

它可能有助於從腳本中提供錯誤消息和相關的代碼片段。 – flodel

+0

請參閱編輯以提問。 –

+0

Bob,X11指的是「X」窗口系統,它比我們通常處理的計算機東西低幾層。它被'R'的'plot()'函數調用以寫入屏幕。當然,'png()'寫入文件而不是屏幕。請參閱Andrie的答案:http://stackoverflow.com/a/8322743/563329 – isomorphismes

回答

2

開始簡單:

  1. 添加一個cronjob,簡單地執行一個命令,也許format(Sys.time()),通過RSCRIPT文件 - 主要是證明(自己),你可以運行的R腳本

  2. 將現有代碼轉換爲可以在命令行運行的R腳本。確保你沒有依賴於環境變量等pp

  3. 將你的腳本添加爲cronjob。如果失敗,則通過添加到1中創建的腳本來逐漸完成。