24小时热门版块排行榜    

Znn3bq.jpeg
北京石油化工学院2026年研究生招生接收调剂公告
查看: 1452  |  回复: 17

wuy069

铁杆木虫 (正式写手)

[求助] 请教:用Shell, awk, perl等语言实现监视SGE集群节点和任务

请教:用Shell, awk, perl等语言实现监视SGE集群节点和任务
简单的bash shell和awk语言会点,但弄个复杂的脚本,功底还是不够

下面的格式有点错位,我把相应的内容以附件粘贴了。

[wuy@cluster test]$ qhost -j
HOSTNAME                ARCH         NCPU  LOAD  MEMTOT  MEMUSE  SWAPTO  SWAPUS
-------------------------------------------------------------------------------
global                  -               -     -       -       -       -       -
compute-0-0             lx26-amd64      4  2.97    3.9G    3.5G    4.0G    2.9G
   job-ID  prior   name       user         state submit/start at     queue      master ja-task-ID
   ----------------------------------------------------------------------------------------------
         6 0.50500 test1.sh   wuy          r     12/09/2012 14:47:26 all.q@comp MASTER        
         7 0.60500 test4.sh   wuy          r     12/09/2012 14:47:26 all.q@comp MASTER        
                                                                     all.q@comp SLAVE         
                                                                     all.q@comp SLAVE         
compute-0-1             lx26-amd64      4  3.56    3.9G    3.8G    4.0G    3.1G
   job-ID  prior   name       user         state submit/start at     queue      master ja-task-ID
   ----------------------------------------------------------------------------------------------
         8 0.60500 test2.sh   tester       r     12/09/2012 14:48:52 all.q@comp MASTER        
                                                                     all.q@comp SLAVE         
                                                                     all.q@comp SLAVE
         9 0.60500 test3.sh   tester       r     12/09/2012 14:48:52 all.q@comp MASTER        
                                                                     all.q@comp SLAVE         
                                                                     all.q@comp SLAVE
在compute-0-0节点上有两个任务6和7,所用的cpu分别为1和2;在compute-0-1节点上有两个任务8和9,所用的cpu分别为2和2.
使用Shell, awk, perl等语言获得的命令脚本打印输出下面所示:
------------------------------------------------------------------------------------------------
  node          state   load    ncpu   mem   memuse   swapto  swapus  tasks  jobids/users     
------------------------------------------------------------------------------------------------
compute-0-0    free    2.97     4    3.9G   3.5G     4.0G    2.9G      3     6/wuy 7/wuy
compute-0-1    busy    3.56     4    3.9G   3.8G     4.0G    3.1G      4     8/tester 9/tester

其中,当node的LOAD为“-”时,相应node的state为down.

下面是根据qstat命令编写脚本监视任务的申请时间和逝去时间
[wuy@cluster test]$ qstat -u '*'
job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
-----------------------------------------------------------------------------------------------------------------
      6 0.50500 test1.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local            1        
      7 0.60500 test4.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local            2  
      8 0.60500 test2.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local            2        
      9 0.60500 test3.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local            2
[wuy@cluster test]$ qstat -j 6 |grep h_rt
hard resource_list:         h_rt=3600
得到的申请时间(reqtime)为3600s,改为小时制:1:00:00
逝去的时间(elaptime)为现在的时间`date`减去任务开始的时间

使用Shell, awk, perl等语言获得的命令脚本打印输出下面所示
job-ID   name       user         state submit/start at     queue                      slots   reqtime      elaptime
--------------------------------------------------------------------------------------------------------------------
      6  test1.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local      1      1:00:00     00:50:00
      7  test4.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local      2      2:00:00     00:50:00
      8  test2.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local      2      5:00:00     00:48:34
      9  test3.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local      2     12:00:00     00:48:34[ Last edited by wuy069 on 2012-12-9 at 18:30 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 求助.txt
  • 2012-12-09 18:30:44, 4.22 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracel

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
看起来貌似很容易写,shell+awk 就可以,不过把你命令的结果组合下就可以了。

不过实在没看懂你需求是什么。你既然懂得脚本,不妨具体解决不了的问题贴出来,更方便一点。
2楼2012-12-09 20:59:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wuy069

铁杆木虫 (正式写手)

引用回帖:
2楼: Originally posted by tracel at 2012-12-09 20:59:38
看起来貌似很容易写,shell+awk 就可以,不过把你命令的结果组合下就可以了。

不过实在没看懂你需求是什么。你既然懂得脚本,不妨具体解决不了的问题贴出来,更方便一点。

嗯,shell+awk应该是能实现的,awk学的不咋好,一时半会整不出来
根据qhost -j命令输出的结果,编写一个脚本打印出:
------------------------------------------------------------------------------------------------
  node          state   load    ncpu   mem   memuse   swapto  swapus  tasks  jobids/users     
------------------------------------------------------------------------------------------------
compute-0-0    free    2.97     4    3.9G   3.5G     4.0G    2.9G      3     6/wuy 7/wuy
compute-0-1    busy    3.56     4    3.9G   3.8G     4.0G    3.1G      4     8/tester 9/tester
这是第一个脚本

第二个:
根据qstat -u ’*'和qstat -j jobid输出的结果,编一个脚本输出以下部分:
job-ID   name       user         state submit/start at     queue                      slots   reqtime      elaptime
--------------------------------------------------------------------------------------------------------------------
      6  test1.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local      1      1:00:00     00:50:00
      7  test4.sh   wuy          r     12/09/2012 14:47:26 all.q@compute-0-0.local      2      2:00:00     00:50:00
      8  test2.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local      2      5:00:00     00:48:34
      9  test3.sh   tester       r     12/09/2012 14:48:52 all.q@compute-0-1.local      2     12:00:00     00:48:34

如果你觉得很容易,我可以给你提供个账号,你在机器上可以编写;方便的话,可把你的QQ号用站内消息发我,谢谢!
3楼2012-12-09 21:20:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
100金币太少了,给我500金币,我给你写。
4楼2012-12-09 23:26:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracel

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wuy069: 金币+20, 有帮助, 要考虑的因素还是挺多的,我有时间再弄吧 2012-12-10 08:07:09
qhost -j | awk '/compute/{b=1;a[b++]=$1;a[b++]=$3;a[b++]=$4;getline;getline;for(i=1;i<5;i++){getline;if(NF==9){a[b++]=$4"/"$1}};print a[1]"\t"a[2]"\t"a[3]"\t"a[4],a[5]}'

你照着这个自己再修改下吧,反正你应该是可以看懂的
5楼2012-12-09 23:42:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wuy069

铁杆木虫 (正式写手)

引用回帖:
4楼: Originally posted by chembetsey at 2012-12-09 23:26:27
100金币太少了,给我500金币,我给你写。

没问题,你只要写好了,满足我上面说的要求就行
6楼2012-12-10 08:08:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
wuy069: 金币+200, 有帮助, 查看节点那脚本还是有问题,希望能进一步完善 2012-12-10 14:17:07
引用回帖:
6楼: Originally posted by wuy069 at 2012-12-10 08:08:41
没问题,你只要写好了,满足我上面说的要求就行...

我写出来了,你要是感兴趣我发给你。
7楼2012-12-10 12:46:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wuy069

铁杆木虫 (正式写手)

引用回帖:
7楼: Originally posted by chembetsey at 2012-12-10 12:46:24
我写出来了,你要是感兴趣我发给你。...

谢谢!我站内消息联系你了,里面有QQ和邮箱,你选择一个发送就行
8楼2012-12-10 13:45:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tracel

木虫 (正式写手)

引用回帖:
7楼: Originally posted by chembetsey at 2012-12-10 12:46:24
我写出来了,你要是感兴趣我发给你。...

贴出来,大家学习下写法嘛
9楼2012-12-10 16:51:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
wuy069: 金币+100, ★★★很有帮助, 能否继续完善,下面有回帖说明。 2012-12-11 08:42:40
wuy069: 金币+200, ★★★很有帮助, 麻烦你了 2012-12-11 09:14:44
wuy069: 金币+10, ★★★★★最佳答案, 非常感谢!!! 2012-12-12 08:09:55
引用回帖:
9楼: Originally posted by tracel at 2012-12-10 16:51:07
贴出来,大家学习下写法嘛...

既然你感兴趣,我也没必要敝帚自珍了。

查看节点Qnod
CODE:
[font=Courier New]
qhost -j | \
awk ' BEGIN {
        print "------------------------------------------------------------------------------------------------"
        print " Node                    Load    Ncpu   Mem   MemUse     Swap  SwapUse    State  Task  Job/User"
        print "------------------------------------------------------------------------------------------------"
        Njob=0
        Ntsk=0
        }

/lx26-amd64/ {
        if(Ntsk>0) {
                if(Ntsk>=Ncpu) printf("%8s %4d   ", "Busy", Ntsk)
                else printf("%8s %4d   ", "Free", Ntsk)
        }
        for(i=1; i<=Njob; i++) {
                printf(" %s/%s", Ijob[i], Ujob[i])
        }
        if(Njob>0) print ""
        Njob=0
        Ntsk=0
        Ncpu=$3
        printf("%-20s %8s %4s %8s %8s %8s %8s", $1, $4, $3, $5, $6, $7, $8)
}
/@.+/ {
        if(NF>4) {
                Njob=Njob+1
                Ijob[Njob]=$1
                Ujob[Njob]=$4
        }
        Ntsk=Ntsk+1
}

END { if(Ntsk>0) {
                if(Ntsk>=Ncpu) printf("%8s %4d   ", "Busy", Ntsk)
                else printf("%8s %4d   ", "Free", Ntsk)
         }
        for(i=1; i<=Njob; i++) printf(" %s/%s", Ijob[i], Ujob[i])
        print ""
        print "------------------------------------------------------------------------------------------------"
}
'
输出
------------------------------------------------------------------------------------------------
Node                    Load    Ncpu   Mem   MemUse     Swap  SwapUse    State  Task  Job/User
------------------------------------------------------------------------------------------------
cluster                  2.99    4     3.9G     1.2G     4.0G      0.0    Free    3    29/wuy 30/wuy
------------------------------------------------------------------------------------------------
[/font]

查看作业Qjob
CODE:
[font=Courier New]
qstat -u '*' | \
awk ' BEGIN { getline; getline
                print "---------------------------------------------------------------------------------------------------------------"
                print " Job-ID   Name        User  State     Start Time           Queue               Slots     ReqTime     ElapTime"
                print "---------------------------------------------------------------------------------------------------------------"
        }

        {        if(NF==9) printf("%4d %12s %8s %4s %20s %25s %4d", $1, $3, $4, $5, $6" "$7, $8, $9)
                else printf("%4d %12s %8s %4s %20s %25s %4d", $1, $3, $4, $5, $6" "$7, " ", $8)
                "qstat -j " $1 " | grep h_rt" | getline Treq
                sub(/hard resource_list:.+h_rt=/, "", Treq)
                printf(" %12s", dTime(Treq))
                "date --date=\""$6" "$7"\" +%s" | getline Nsec
                printf(" %12s\n", dTime(systime()-Nsec))
        }
END {                 print "---------------------------------------------------------------------------------------------------------------"}
function dTime(Nsec) {
        return int(Nsec/86400)":"int((Nsec%86400)/3600)":"int((Nsec%3600)/60)":"Nsec%60
}
'
输出
---------------------------------------------------------------------------------------------------------------
Job-ID   Name        User  State     Start Time           Queue               Slots     ReqTime     ElapTime
---------------------------------------------------------------------------------------------------------------
  29   gmstest1.s      wuy    r  12/10/2012 15:11:37       all.q@cluster.local    1     50:0:0:0   0:14:38:47
  30   gmstest2.s      wuy    r  12/10/2012 15:12:07       all.q@cluster.local    2     50:0:0:0   0:14:38:18
  31     core3.sh      wuy   qw  12/10/2012 15:12:27                              3      0:1:0:0   0:14:37:58
---------------------------------------------------------------------------------------------------------------
[/font]

10楼2012-12-11 06:03:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wuy069 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 388求调剂 +6 四川王涛 2026-04-07 8/400 2026-04-08 00:17 by JourneyLucky
[考研] 求调剂 +11 柒luck 2026-04-07 11/550 2026-04-07 22:59 by lbsjt
[考研] 316求调剂 +4 15318418673 2026-04-07 4/200 2026-04-07 22:12 by hemengdong
[考研] 求调剂 +8 月@163.com 2026-04-07 10/500 2026-04-07 19:10 by 无际的草原
[考研] 一志愿南京航空航天大学 材料与化工329分求调剂 +9 Mr. Z 2026-04-05 9/450 2026-04-07 15:30 by 尽舜尧1
[考研] 085404 293求调剂 +8 勇远库爱314 2026-04-06 9/450 2026-04-07 13:05 by flydream1314
[考研] 304求调剂 +4 luoye0105 2026-04-05 4/200 2026-04-06 21:05 by 木子君1218
[考研] 求调剂 +10 chenxrlkx 2026-04-05 10/500 2026-04-06 11:31 by 猪会飞
[考研] 求调剂 +7 张.1 2026-04-05 7/350 2026-04-05 20:40 by 啵啵啵0119
[考研] 工科08-机械专硕-求调剂 +3 雷欧飞踢 2026-04-02 3/150 2026-04-05 18:49 by 蓝云思雨
[考研] 材料化工306分找合适调剂 +14 沧海轻舟e 2026-04-04 14/700 2026-04-05 09:53 by 朱云虎202
[考研] +5 化工专硕323分 2026-04-04 5/250 2026-04-05 08:02 by 544594351
[考研] 求生物学学硕调剂——364分 +7 云朵遛弯指南 2026-04-04 7/350 2026-04-04 22:49 by zhyzzh
[考研] 342求调剂 +3 Liang7111 2026-04-04 5/250 2026-04-04 19:47 by dongzh2009
[考研] 085701求调剂 +7 龚禹铭 2026-04-04 8/400 2026-04-04 13:49 by 小小树2024
[考研] 387求调剂 +4 爱吃片豆土 2026-04-03 5/250 2026-04-04 08:10 by 岸上的一条鱼
[考研] 274求调剂 +9 顺理成张 2026-04-03 10/500 2026-04-03 15:10 by 啊俊!
[考研] 求调剂 +3 心想事成可 2026-04-03 3/150 2026-04-03 11:22 by wangjy2002
[考研] 复试调剂 +3 bvzz 2026-04-01 3/150 2026-04-03 09:47 by 蓝云思雨
[考研] 一志愿陕西师范大学生物学317分 +5 1563日。 2026-04-02 5/250 2026-04-03 06:58 by ilovexiaobin
信息提示
请填处理意见