r - 如何在服务器中运行带有 `for` 和 `R` 代码的 bash 脚本,我可以退出终端并且不会终止进程?
问题描述
上下文:我正在通过 R 运行一个模拟,每次重复都需要很长时间并且很消耗内存。因此,我需要每次重复 R 中的另一个会话开始,这样我就不会遇到内存问题。
我的问题:从终端执行我的 bash 脚本后,exit
当前的重复成功完成,但下一个没有开始(我正在通过服务器在服务器上运行它ssh
)。
我做了什么:
compoisson.sh
bash脚本:
#!/bin/bash
for rho in $(seq 1 3); do
for rep in $(seq 1 200); do
Rscript Teste.R $rho $rep
done
done
在终端中(通过 ssh user@domain... 进入后):
chmod +x compoisson.sh
sh compoisson.sh &
exit
我的Teste.R
脚本(内容不重要,可能是空文件):
rm(list=ls())
library(TMB)
# library(TMB, lib.loc = "/home/est/bonat/nobackup/github")
model <- "04_compoisson_bi" #1st try
compile(paste0(model, ".cpp"), flags = "-O0 -ggdb")
dyn.load(dynlib(model))
## Data simulation -------------------------------------------------------------
nresp <- 2; beta1 <- log(7);beta2 <- log(1.5);nu1 <- .7
nu2 <- .7;n <- 50;s2_1 <- 0.3;s2_2 <- 0.15;true_rho <- 0
sample_size <- 1000
openmp(4)
args <- commandArgs(TRUE)
rhos <- c(-.5,0,.5)
true_rho <- rhos[abs(as.numeric(args[1]))]
j <- abs(as.numeric(args[2]))
seed <- 2109+j
res_neg <- simulacao(nresp, beta1, beta2, true_rho, s2_1, s2_2, seed, sample_size = sample_size, model, nu1=nu1, nu2=nu2, j = j) # 1 by time
saveRDS(res_neg, file = paste0(getwd(), "/Output/output_cmp_rho", true_rho, "n", sample_size, "j", j, ".rds"))
一个重要的细节是我需要通过ssh
. 我在我的电脑上用一个空.R
文件做了一个小测试,我也能看到通过htop
. 在服务器上,它没有发生。
我也尝试nohup
运行我的compoisson.sh
文件(question1,question2),但我没有任何成功。我的测试:
nohup compoisson.sh &
ignoring the entrance and attaching the output to 'nohup.out'
nohup: failt to execute the command 'compoisson.sh': File or directory does not exists.
我究竟做错了什么?
解决方案
用nohup ./compoisson.sh &
代替解决sh compoisson.sh &
推荐阅读
- ruby-on-rails - 通过中间表在同一模型上建立多对多关系
- multithreading - 为内核保留硬件线程(“核心”或“处理器”)(IE,防止调度程序将用户工作分配给该硬件线程)
- javascript - 将 npm 模块集成到纯 Javascript 应用程序中,不知道如何修复错误
- firewall - NAT防火墙后面的Apache Geode
- css - 部署的 gh-pages 站点看起来与 localhost 不同(React 应用程序)
- google-cloud-platform - 使用服务帐户错误设置计划查询 PermissionDenied: 403 The caller does not have permission in data_transfer_service
- salesforce - Salesforce Marketing Cloud API - 订阅者重写
- qt - QT,使用带有自定义消息处理程序的 qDebug() 不显示行/文件/函数信息
- python - 计算两个 3d 轨迹之间表面积的可靠方法?
- android - TermuxArch 中缺少 sdkmanager “模拟器”,但在正常的 Arch Linux 安装中可用