计时器检查文件bash shell的末尾



我正在使用代码基本运行以重新启动计算。该代码工作正常。但是我想即兴创造代码。现在,它在计时器功能睡眠上运行。它永远不会检查文件的末尾。因此,无论上一份工作如何,它等待22分钟即可提交下一份工作。因此,我想以每分钟从日志文件中的关键字"末端"检查文件的末尾更改代码,并提交下一个作业。如果您有任何想法,请给我一个味精...


while(1)


#sleep x秒/分钟

    $SLEEP 22m
    #cut JobID into peeces:
    #e.g.: 31380.chic1i20.informatik.tu-chemnitz.de Info: Your job definition is checked against CHiC policies. --> 31380.chic1i20
    #set JOBnr = `echo $JOBID | $CUT -c-15`
    set JOBnr = `echo $JOBID | $CUT -d " " -f1 | $CUT -d "." -f-2`
    $QSTAT -nu "$USER" > .qstat_outfile
    if ( "$?" ) then
            echo "autorestart: qstat error"
            $CAT .qstat_outfile
            continue
    endif

尝试以下:

UNWRITTEN=0
while [ $UNWRITTEN -eq 0 ]; do
 token=$(tail -n 2 .qstat_outfile)
 echo $token
 if [[ $token == "End of program" ]]
 then
     echo "autorestart..."
     UNWRITTEN=1
 fi
 sleep 60
done

说明:

  • 程序不断循环,直到它在日志文件末端找到正确的线。然后它重新启动您的计算并退出。
  • tail -n 2读取最后两行(如果在"程序的结束"之后有newline,则实际上是最后一行。您可能需要将其调整为系统上的-n 1。)

如果我把你做对了,那么这样的一环可能会帮助您:

stop=0
while [ $stop == 0 ]; do 
    tail -1 $LOGFILE | grep -q "End of program" && stop=1 || sleep 60 
done

(它检查搜索文本的存在的LogFile的最后一行(tail -1),停止 如果找到文字或睡觉60秒,则为)。

相关内容

  • 没有找到相关文章

最新更新