服务器注销后在后台运行批处理作业

时间:2014-10-06 06:59:10

标签: shell unix parallel-processing batch-processing gnu-screen

我有一个 csh-shell skript,它在服务器上启动 N 批处理作业。完成一个作业后,skript将运行另一个作业,直到所有运行完成。 只要我登录服务器,这完全正常。

由于运行需要几天,我必须不时注销,这就出现了问题: 即使我运行脚本 jobs.sh 然后使用 nohup 命令在 batch.sh 中启动批处理作业,该任务也会在已启动批处理作业已完成,并且未启动任何新的批处理作业我该如何防止这种情况?

    $ nohup jobs.sh

看起来或多或少像这样:

    #!/bin/csh -f
    ...
    eval "nice +5 batch.sh <options>"

batch.sh 例程如下所示:

    time program.x

2 个答案:

答案 0 :(得分:2)

screen会话中启动您的脚本,当您注销/断开连接时,它不会被杀死。稍后当您重新登录以检查事物时,您可以重新附加会话。

如果您是screen的新用户,可能需要查看this page

  

Screen是一个基于文本的程序,通常被描述为窗口管理器或终端多路复用器。虽然它做了很多事情,但它的两个最大特点是它的可拆卸性和多路复用性。可拆卸性意味着您可以从屏幕内部运行程序,分离和注销,然后稍后登录,重新附加,程序仍然存在。多路复用意味着您可以在单个屏幕会话中运行多个程序,每个程序都在其自己的窗口内。您可以一次显示多个窗口,或者只是在它们之间切换,即使您只有一个终端窗口可供使用。

tmux是另一个类似的计划。

答案 1 :(得分:1)

尝试使用GNU Screen。它允许您一次打开几个shell。你可以与那些正在运行的炮弹断开连接(即与Putty关闭会话),他们会继续做他们的事情。

使用nohup,您无法恢复互动。

相关问题