【问题标题】:Keep a script running through ssh after logout注销后保持脚本通过 ssh 运行
【发布时间】:2014-06-03 02:42:08
【问题描述】:

这是我在这里发布的第一个问题。我试图进行整个搜索,但如果我没有(答案在其他地方很明显),请告诉我。

我有一个为我运行程序的脚本,这里是:

csv_file=../data/teste_nohup.csv
trace_file=../data/gnp.trace

declare -i n=100
declare -i p=1
declare -i counter=0

while [ $counter -lt 3 ];
do
n=100    
    while true
    do
      nice -19 sage gnptest.py ${n} ${p} | tee -a ${csv_file}
      notify-send "finished test gnp ${n} ${p}"
    done
done

所以,我要做的是运行 gnptest.py 程序几次,然后将结果写入 csv_file。

问题是,根据输入,程序可能需要很长时间才能完成。所以我想通过ssh连接到服务器,启动程序,关闭终端,时不时检查一下输出文件。 我试过 nohup 和 disown。 Nohup 创建了一个巨大的 nohup.out 文件,其中充满了我在正常运行脚本时没有得到的错误(例如,它抱怨使用 -lt 操作数)。但我面临的最大问题是没有命令(nohup ou disown -h)正在执行程序并将输出发送到我在 csv_file 变量中指定的文件,这是使用 tee 命令完成的。此外,在我注销后,它们似乎都没有继续运行......

任何帮助将不胜感激。

提前致谢!!

【问题讨论】:

  • 你可以试试screen或者dtach。
  • tmux! :D
  • 或者使用nohup在后台运行脚本
  • 非常感谢你们的快速回复!!!我尝试了屏幕,它就像一个魅力!我很开心!!谢谢@evading 我不能使用 tmux,因为我不允许在我正在使用的服务器上安装软件。正如我之前所说,我尝试使用 nohup,但它对我不起作用。但同样,我真的很感谢所有的帮助!

标签: linux ssh nohup


【解决方案1】:

我刚刚加入,所以无法添加评论

请尝试在脚本中使用重定向而不是 tee 并摆脱 Nohup.out 使用以下运行脚本 nohup script.sh > /dev/null 2>&1 &

如果上面产生错误使用

nohup script.sh > /dev/null 2>&1 </dev/null &

希望这会有所帮助。

【讨论】:

  • 感谢您的回复,@Jord。但是 nohup 对我没有好处,即使有重定向,因为我在程序运行期间在屏幕上打印了一些我不想在结果文件中结束的信息。我会保存你的命令以备不时之需使用 nohup。
猜你喜欢
  • 2010-10-09
  • 2012-01-27
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
相关资源
最近更新 更多