我有一个 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
答案 0 :(得分:2)
在screen
会话中启动您的脚本,当您注销/断开连接时,它不会被杀死。稍后当您重新登录以检查事物时,您可以重新附加会话。
如果您是screen
的新用户,可能需要查看this page:
Screen是一个基于文本的程序,通常被描述为窗口管理器或终端多路复用器。虽然它做了很多事情,但它的两个最大特点是它的可拆卸性和多路复用性。可拆卸性意味着您可以从屏幕内部运行程序,分离和注销,然后稍后登录,重新附加,程序仍然存在。多路复用意味着您可以在单个屏幕会话中运行多个程序,每个程序都在其自己的窗口内。您可以一次显示多个窗口,或者只是在它们之间切换,即使您只有一个终端窗口可供使用。
tmux
是另一个类似的计划。
答案 1 :(得分:1)
尝试使用GNU Screen。它允许您一次打开几个shell。你可以与那些正在运行的炮弹断开连接(即与Putty关闭会话),他们会继续做他们的事情。
使用nohup
,您无法恢复互动。