免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3072 | 回复: 11
打印 上一主题 下一主题

[系统管理] 求用awk写一处理脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-16 10:34 |只看该作者 |倒序浏览
本帖最后由 wuy069 于 2015-08-29 11:52 编辑

请教各位大牛给写一脚本处理!

使用qstat -u '*'命令输出
  1. job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID
  2. -----------------------------------------------------------------------------------------------------------------
  3.     114 0.50500 ppp-63757  am1          r     08/15/2015 19:56:59 NeXtScale.q@compute-0-39.local     4        
  4.     121 0.60500 tpa-ic3-ne pm3          r     08/15/2015 21:51:59 NeXtScale.q@compute-0-37.local     8        
  5.     122 0.60500 dimer-sigl peter        r     08/15/2015 21:52:29 NeXtScale.q@compute-0-38.local     8        
  6.     124 0.60500 m5-5-CNT-4 aheon        r     08/16/2015 08:57:30 NeXtScale.q@compute-0-39.local     8        
  7.     125 0.60500 m5-5-CNT-4 aheon        r     08/16/2015 08:57:45 NeXtScale.q@compute-0-41.local     8        
  8.     126 0.50500 y-10612-t  aml          r     08/16/2015 09:08:00 NeXtScale.q@compute-0-42.local     4        
  9.     123 0.60500 tpa-jppc-6 pm3          qw    08/15/2015 21:53:52                                    8        
复制代码
使用qstat -j 114 |grep h_rt命令输出,(其中114是上面输出的job-ID)
hard resource_list:         h_rt=7232400,h_vmem=2.67G,virtual_free=4.0G
这时可获得申请时间reqtime,h_rt=7232400,转化成小时:分钟:秒=2009:00:00

想通过这两个命令,写一个awk脚本,输出如下:
  1. job-ID  prior    name         user    state submit/start at         queue                        slots  reqtime    elaptime
  2. ---------------------------------------------------------------------------------------------------------------------------
  3.   114   0.50500  ppp-63757    am1      r    08/15/2015   19:56:59   NeXtScale.q@compute-0-39.local 4   2009:00:00  14:04:44
  4.   121   0.60500  tpa-ic3-ne   pm3      r    08/15/2015   21:51:59   NeXtScale.q@compute-0-37.local 8   2009:00:00  12:09:44
  5.   122   0.60500  dimer-sigl   peter    r    08/15/2015   21:52:29   NeXtScale.q@compute-0-38.local 8   2009:00:00  12:09:14
  6.   124   0.60500  m5-5-CNT-4   aheon    r    08/16/2015   08:57:30   NeXtScale.q@compute-0-39.local 8   2012:02:00  01:04:13
  7.   125   0.60500  m5-5-CNT-4   aheon    r    08/16/2015   08:57:45   NeXtScale.q@compute-0-41.local 8   2009:00:00  01:03:58
  8.   126   0.50500  y-10612-t    aml      r    08/16/2015   09:08:00   NeXtScale.q@compute-0-42.local 4   2009:00:00  00:53:43
  9.   123   0.60500  tpa-jppc-6   pm3      qw   08/15/2015   21:53:52                                  8   2113:00:00  12:07:51
复制代码
其中,elaptime是现在的时间 减去 state submit/start at时间,比如114这个作业的提交时间是08/15/2015 19:56:59,那么逝去时间elaptime就是现在时间减去作业的提交时间。


恳请各位高手指点,在此不胜感激!!!

论坛徽章:
0
2 [报告]
发表于 2015-08-29 09:47 |只看该作者
自顶一下,求高手!!!

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2015-08-29 11:25 |只看该作者
回复 2# wuy069


    这么长时间,你都干了些啥?

论坛徽章:
0
4 [报告]
发表于 2015-08-29 11:46 |只看该作者
本帖最后由 wuy069 于 2015-08-29 11:49 编辑

回复 3# MMMIX


    用python写了一个,勉强用吧,但还是想用awk写一个,awk自己也写了一个,但是执行起来很慢;自己也不是学计算机的,没那么多时间用在写脚本上啊。

我自己写的awk脚本,
  1. #!/bin/sh
  2. qstat -u '*' | \
  3. awk ' BEGIN { getline; getline
  4.         if(NR>0) {
  5.         print "job-ID  prior    name         user    state submit/start at         queue                        slots  reqtime    elaptime"
  6.         print "---------------------------------------------------------------------------------------------------------------------------"
  7.          }
  8.     }

  9.     {   if(NF==9)  printf("%5d %9s  %-12s %-8s %-4s %-12s %-10s %-30s %-4d", $1, $2, $3, $4, $5, $6, $7, $8, $9)
  10.         if(NF==8)  printf("%5d %9s  %-12s %-8s %-4s %-12s %-10s %-30s %-4d", $1, $2, $3, $4, $5, $6, $7, " ", $8)
  11.         "qstat -j " $1 " | grep h_rt" | getline Treq
  12.         sub(/hard resource_list:.+h_rt=/, "", Treq)
  13.         printf("%2s", dTime(Treq))
  14.         "date --date=\""$6" "$7"\" +%s" | getline Nsec
  15.         printf("%s\n", dTime(systime()-Nsec))
  16.     }
  17. function dTime(Nsec) {
  18.         printf("%02d:%02d:%02d", int(Nsec/3600),int((Nsec%3600)/60),Nsec%60)
  19. }
  20. '
复制代码
高手,给改改呗

论坛徽章:
7
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:18程序设计版块每日发帖之星
日期:2015-08-09 06:20:00每日论坛发贴之星
日期:2015-08-09 06:20:00程序设计版块每日发帖之星
日期:2015-08-22 06:20:00程序设计版块每日发帖之星
日期:2015-08-27 06:20:00
5 [报告]
发表于 2015-08-29 11:55 |只看该作者
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3775893
不知道能不能帮到你了。呵呵。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2015-08-29 11:56 |只看该作者
回复 4# wuy069


    awk 脚本本身看不出造成慢的原因,你的 qstat 命令执行速度怎么样?qstat -u "*" 有多少输出?

论坛徽章:
0
7 [报告]
发表于 2015-08-29 14:19 |只看该作者
本帖最后由 wuy069 于 2015-08-29 14:48 编辑

回复 6# MMMIX
qstat执行速度很快,这是作业管理系统自带命令。qstat -u "*"输出起码5条以上吧,有时候几十条都正常。觉得慢主要是awk中有调用了qstat -j jobid命令输出,这样当有几十条时,整体输出觉得就像是两段似的,后面的reqtime和elaptime明显滞后。

   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2015-08-29 16:58 |只看该作者
回复 7# wuy069


    估计是 qstat -j 执行比较慢吧。

论坛徽章:
0
9 [报告]
发表于 2015-08-30 18:04 |只看该作者
回复 8# MMMIX

qstat -j这些都执行非常快的,但是这些写在awk里面就效率迟缓
   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
10 [报告]
发表于 2015-08-30 19:39 |只看该作者
回复 9# wuy069


    那就搞不清楚怎么回事了。不过,最好还是只调用 qstat 一次,把所有需要的信息都获取,然后在按需抽取,这样的话可以避免多次调用 qstat 带来的问题:除了速度,还要考虑在后面调用 qstat 的时候,第一次调用 qstat 返回的某些 job 可能已经结束。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP