【问题标题】:monitoring job titles on torque cluster using ksh使用 ksh 监控扭矩集群的职称
【发布时间】:2017-10-19 07:26:04
【问题描述】:

如果我使用qstat,我可以获得当前正在运行的作业列表

host     username othername  NameTask_JOBXXXX_G1_namesubtask                  --      1   1     -- 8783: Q 00:00
host     username othername  NameTask2_JOBXXXX_G2_namesubtask                       --      1   1     -- 8783: C 00:00

到目前为止,我可以使用 ksh 脚本跟踪状态:

#!/usr/bin/ksh 
while sleep 2; do ; echo -n $(mystat | grep JOB | grep -c Q) 'Queued   '  ; 
echo -n $(mystat | grep JOB | grep -c ': R') 'Running   '  ;
echo  $(mystat | grep JOB | grep -c ': C') 'Completed   '  ;
echo   "$(mystat | grep C | tail -n 5 | tr -s ' ' | cut -d ' ' -f 4,11)"
echo
done

每 2 秒为我提供最近 5 个已完成作业完成时的 Running、Queud、Complemented 数。

如何扩展它以计算当前正在运行的具有不同“NameTask_”的行数? 我想要之前脚本的结果,但是按 NameTask_ 和 G_ 分组

【问题讨论】:

    标签: linux shell ksh torque


    【解决方案1】:

    看起来像是数组的工作

        typeset -A jobCnt       # Associative array for job counts
        typeset -A ntCnt        # A. array for NameTask count
        typeset -A stCnt        # A. array for namesubtask count
        typeset -a cjList       # Indexed array for Completed job list
        integer ci=0
    
        while read host uName oName tName v w x y z stat statTime
          do
            ((jobCnt[${stat}]++))   # Count of (current) jobs by status
    
            if [[ ${stat} == C ]]   # Completed task (time) ordered
              then  
                cjList[$((ci++))]=${statTime}
            fi
    
            ((ntCnt[${tName%%_*}]++))   # NameTask count
            ((stCnt[${tName##*_}]++))   # namesubtask count
         done
    
        for st in ${!jobCnt[@]}         # Over 'st'atus in jobCnt array
          do
            echo "Number ${st} jobs: ${jobCnt[${st}]}"
         done
    
        echo "Last 5 Completed jobs:"
        if (( ${#cjList[@]} <= 5 ))
          then
            integer istart=0            # All C jobs in array
          else
            ((istart = ${#cjList[@]} - 5))      # Last 5 jobs in array
        fi
    
        for ((i=${istart} ; i<${#cjList[@]} ; i++))
          do
            echo ${cjList[${i}]}
         done
    
        echo "Job counts by NameTask: "
        for n in ${!ntCnt[@]}
          do
            echo "${n} ${ntCnt[${n}]}"
         done
    
        echo "Job counts by NameSubTask: "
        for s in ${!stCnt[@]}
          do
            echo "${s} ${stCnt[${s}]}"
         done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多