嗨,这是一个我不确定如何构架的问题。
我正在从远程服务器运行R.我对远程服务器的访问是通过ssh @ username等进行的。在我访问后,我有一个命令提示符,我调用R,我很乐于在R.上工作。
问题1 我有一个大型网络(100k节点),并希望进行社区检测,并希望在后台运行它,如果我关闭我的终端,它一直运行,直到它完成保存结果在我的R工作目录。
我尝试过使用nohup R&但我不确定这个过程是否成功完成。
问题2 如果我设法实现问题1,我怎么能继续使用R来执行其他任务?和
问题3 我如何检查Q1中的任务是否仍在运行。
我对脚本的尝试看起来像这样
#!/usr/bin/env Rscript
library(igraph)
library(data.table)
edgebetween <- function(x) {
simplify(x, remove.multiple = F, remove.loops = T)
edge.betweenness.community(x, directed = T)
}
community.a.g3 <- edgebetween(a.g3)
我已将脚本保存在我的工作总监中作为a.R
并在更改为我的工作目录后在命令提示符下使用 chmod + x a.R nohup ./a.R&amp;
我需要纠正什么。感谢
答案 0 :(得分:3)
您想在“批处理”模式下执行R.见(https://stat.ethz.ch/R-manual/R-devel/library/utils/html/BATCH.html)
以下命令是这些文档的示例。 “&amp;”说“将其与用户的登录会话分开运行”,因此当您注销时,它会继续运行。
R CMD BATCH [options] infile [outfile] &
您也可以使用此处讨论的nohup(http://streaming.stat.iastate.edu/wiki/index.php/Running_Jobs_in_the_Background)
nohup R CMD BATCH ./myprog.R &
答案 1 :(得分:0)
迟到但如果其他人需要答案。 做这个: 保存您的脚本,我将使用Test.R作为示例。
head Test.R
library(igraph)
library(data.table)
edgebetween <- function(x) {
simplify(x, remove.multiple = F, remove.loops = T)
edge.betweenness.community(x, directed = T)
}
community.a.g3 <- edgebetween(a.g3)
使用screen
然后运行Rscript Test.R
并点击ctrl + a + d
。
当你回来时,请screen -ls
,然后screen -r <Number of your screen session>
。瞧!