【问题标题】:Run batch jobs in background after server logout服务器注销后在后台运行批处理作业
【发布时间】:2014-10-06 06:59:10
【问题描述】:

我有一个 csh-shell 脚本,它在服务器上启动 N 个批处理作业。完成一项作业后,脚本将运行另一项作业,直到所有运行完成。 只要我登录服务器,这一切都很好。

由于运行需要几天时间,我不得不不时退出,问题就来了: 即使我运行脚本 jobs.sh 然后使用 nohup 命令启动 batch.sh 中的批处理作业,任务在已启动的批处理作业已完成,并且没有启动新的批处理作业。我怎样才能防止这种情况发生?

    $ nohup jobs.sh

看起来或多或少是这样的:

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

batch.sh 例程如下所示:

    time program.x

【问题讨论】:

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


    【解决方案1】:

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

    如果您是screen 的新手,您可能想查看this page

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

    tmux 是另一个类似的程序。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        • 2011-08-23
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多