[問題] R segment fault on linux Centos7

看板R_Language作者 (吃吃吃..只會吃)時間7年前 (2017/06/29 21:40), 7年前編輯推噓0(0018)
留言18則, 2人參與, 最新討論串1/1
[問題類型]: 程式諮詢 [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 我在linux Centos7.3的環境下使用linux本機端的R-3.4.0,結果出現segment fault(core dump) 但使用同一台linux的RStudio server IDE執行相同code,可正常執行. 確認linux本機端開啟的R與RStudio server開啟的都是/srv/lib64/R/bin/R <---都是它 因為需要使用到linux排程執行R code,所以如果linux本機端的R無法正常運作, 排程執行就會有問題 [程式範例]: 我主要目的在使用JDBC連結資料庫MSSQL,同樣指令使用RStudio server IDE是可以運行 且正常抓SQL資料做後續運算,但使用本機端R-3.4.0卻不行 library(RJDBC) drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "/etc/jdbc/sqljdbc4.jar", identifier.quote="`") 執行此行會直接跳出segment fault(core dump)後強制離開R,回到linux命令提示字元 [環境敘述]: 明天進公司待補... [關鍵字]: segment fault(core dump) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.235.1.52 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1498743600.A.191.html ※ 編輯: likuyun (182.235.1.52), 06/29/2017 21:43:45 ※ 編輯: likuyun (182.235.1.52), 06/29/2017 21:47:19

06/29 22:01, , 1F
你是用crontab?
06/29 22:01, 1F

06/29 22:01, , 2F
crontab通常環境變數都不夠,要設定
06/29 22:01, 2F

06/29 22:02, , 3F
像是我都要給JAVA路徑在PATH中、給JAVA_HOME
06/29 22:02, 3F

06/29 22:02, , 4F
給Oracle的so檔案 (for ROracle)等
06/29 22:02, 4F

06/29 22:03, , 5F
是的 我是用crontab
06/29 22:03, 5F

06/29 22:04, , 6F
so檔案的連結是放在 LD_LIBRARY_PATH裡面
06/29 22:04, 6F

06/29 22:05, , 7F
明天試看看 環境變數PATH中 加入 JDBC的資料夾絕對路徑
06/29 22:05, 7F

06/29 22:05, , 8F
JAVA是放$JAVA_HOME/jre/lib/amd64/server
06/29 22:05, 8F

06/29 22:05, , 9F
PATH中放入上述的位置
06/29 22:05, 9F

06/29 22:06, , 10F
反正先用library(rJava)測試crontab是否可以正常
06/29 22:06, 10F

06/29 22:06, , 11F
然後測試.jinit是否可以正確吃到jar檔案
06/29 22:06, 11F

06/29 22:06, , 12F
最後才去試RJDBC
06/29 22:06, 12F

06/29 22:07, , 13F
不過我JDBC連法跟你不同@@
06/29 22:07, 13F

06/29 22:08, , 14F
我是用.jinit 參數classpath放需要的jar檔案
06/29 22:08, 14F

06/29 22:08, , 15F
然後直接開JDBC
06/29 22:08, 15F

06/29 22:08, , 16F
另外因為Java容易GC overhead,還有放-Xmx8g的參數
06/29 22:08, 16F

06/29 22:11, , 17F
-Xmx8g 我都用到32G 但這次問題我搞好久搞不定
06/29 22:11, 17F

06/29 22:13, , 18F
反正你照我的測試方法走一次看看,不行再來找問題QQ
06/29 22:13, 18F
文章代碼(AID): #1PLGCm6H (R_Language)