Awk 如何解析bhist日志

Awk 如何解析bhist日志,awk,sed,lsf,Awk,Sed,Lsf,我正在使用IBMLSF,并试图获取特定时期内的使用统计数据。我发现bhist完成了这项工作,但是简短的bhist输出并没有显示我需要的所有字段 我想知道的是: bhist的输出字段是否可自定义?我需要的字段是: 如果1不可能,那么长格式(bhist-l)输出将显示我需要的所有内容,但格式很难操作。我在下面粘贴了一个格式示例 例如,记录之间的行数不是固定的,每个事件中的单词换行可能会打断我试图扫描的单词中间的行。如何使用sed和awk解析此格式 JobId <1531&

我正在使用IBMLSF,并试图获取特定时期内的使用统计数据。我发现
bhist
完成了这项工作,但是简短的
bhist
输出并没有显示我需要的所有字段

我想知道的是:

  • bhist的输出字段是否可自定义?我需要的字段是:

  • 如果1不可能,那么长格式(
    bhist-l
    )输出将显示我需要的所有内容,但格式很难操作。我在下面粘贴了一个格式示例

  • 例如,记录之间的行数不是固定的,每个事件中的单词换行可能会打断我试图扫描的单词中间的行。如何使用

    sed
    awk
    解析此格式

    JobId <1531>, User <user1>, Project <default>, Command< example200>
    Fri Dec 27 13:04:14: Submitted from host <hostA> to Queue <priority>, CWD <$H
                         OME>, Specified Hosts <hostD>;
    Fri Dec 27 13:04:19: Dispatched to <hostD>;
    Fri Dec 27 13:04:19: Starting (Pid 8920);
    Fri Dec 27 13:04:20: Running with execution home </home/user1>, Execution CWD 
                         </home/user1>, Execution Pid <8920>;
    Fri Dec 27 13:05:49: Suspended by the user or administrator;
    Fri Dec 27 13:05:56: Suspended: Waiting for re-scheduling after being resumed 
                         by user;
    Fri Dec 27 13:05:57: Running;
    Fri Dec 27 13:07:52: Done successfully. The CPU time used is 28.3 seconds.
    
    Summary of time in seconds spent in various states by Sat Dec 27 13:07:52 1997
    PEND  PSUSP  RUN  USUSP  SSUSP  UNKWN  TOTAL
    5     0      205  7      1      0      218
    ------------------------------------------------------------
        .... repeat
    
    JobId、用户、项目、命令
    Fri Dec 27 13:04:14:从主机提交到队列,CWD,指定主机;
    12月27日星期五13:04:19:发送至;
    12月27日星期五13:04:19:启动(Pid 8920);
    星期五12月27日13:04:20:执行总部运行,执行CWD
    执行Pid;
    Fri Dec 27 13:05:49:被用户或管理员暂停;
    12月27日星期五13:05:56:暂停:恢复后等待重新安排
    按用户;
    12月27日星期五13:05:57:跑步;
    12月27日星期五13:07:52:成功完成。使用的CPU时间为28.3秒。
    截至1997年12月27日星期六13:07:52,各种状态下的时间汇总(秒)
    未决PSUSP运行USUSSP SUSSP未知总计
    5     0      205  7      1      0      218
    ------------------------------------------------------------
    .... 重复
    
    长格式输出很难解析。我知道
    bjobs
    在较旧的LSF版本中有一个用于无格式输出(
    -UF
    )的选项,这使它更容易一些,而最新版本的LSF允许您自定义使用
    -o
    以简短形式输出的列

    不幸的是,
    bList
    中没有这两个选项。历史信息的唯一真实可能性是:

  • 想办法解析
    bhist-l
    ——不切实际,甚至可能不可能,因为您发现格式不一致
  • 使用lsfapi编写一个C程序来执行您想要的操作,它公开了
    bhist
    本身用来解析
    lsb.events
    文件的函数。这是存储有关LSF集群的所有历史信息的文件,也是
    bList
    读取以生成其输出的文件
  • 如果C不是您的选项,那么您可以尝试编写一个脚本来直接解析
    lsb.events
    文件——该格式记录在配置参考中。这很难,但并非不可能。是LSF 9.1.3的相关文件

  • 我个人的建议是#2--您正在寻找的函数是
    lsb_geteventrec()
    。基本上,您可以一次一行地阅读
    lsb.events中的每一行,并提取您需要的信息。

    我添加了第二个答案,因为它可以帮助您解决问题,而无需编写自己的解决方案(取决于您所关注的使用统计数据)

    LSF已经有了一个名为
    bacct
    的实用程序,它可以计算并打印出有关按各种条件筛选的历史LSF作业的各种使用统计信息

    例如,要获取有关在time0和time1之间调度/完成/提交的作业的摘要使用统计信息,可以(分别)使用:

    有关特定用户提交的作业的统计信息:

    bacct -u <username>
    
    该命令还有一个长格式输出,它提供了有关每个作业的一些类似于
    bhist-l
    的信息,这些信息可能更容易解析(尽管仍然不是那么容易):

    $bacct-l-u bobbafett-q正常
    有关以下工作的会计信息:
    -由用户bobbafett提交,
    -负责所有项目。
    -正常完成或退出
    -在所有主机上执行。
    -提交到队列正常,
    -所有服务类别的会计。
    ------------------------------------------------------------------------------
    作业、用户、项目、状态、队列、,
    命令
    11月11日星期三17:37:45:由主持人CWD提交;
    11月11日星期三17:55:05:已完成;术语“所有者”:被所有者杀死的作业。
    有关此工作的会计信息:
    CPU\u T等待周转状态HOG\u因子MEM交换
    0.00 1040 1040出口0.0000 0M
    ------------------------------------------------------------------------------
    ...
    
    按原样,它有点宽。试着展示你尝试了什么,你想要什么,你面临着什么问题。正确的解决方案是awk(假设没有现有的面向应用的工具)。sed是对单个行的简单替换,这就是全部——记住,不管人们在sed命令行中咀嚼什么古怪的字符组合,然后向您抛出。也许您不理解@fedorquis评论的一个重要部分-您必须至少向我们展示给定输入的预期输出,以便我们有机会理解您的需求。
    bacct -u <username>
    
    bacct -q <queuename>
    
    bacct -S time0,time1 -C time0,time1 -P <projectname>
    
    $ bacct -u bobbafett -q normal
    
    Accounting information about jobs that are: 
      - submitted by users bobbafett, 
      - accounted on all projects.
      - completed normally or exited
      - executed on all hosts.
      - submitted to queues normal, 
      - accounted on all service classes.
    ------------------------------------------------------------------------------
    
    SUMMARY:      ( time unit: second ) 
     Total number of done jobs:       0      Total number of exited jobs:    32
     Total CPU time consumed:      46.8      Average CPU time consumed:     1.5
     Maximum CPU time of a job:     9.0      Minimum CPU time of a job:     0.0
     Total wait time in queues: 18680.0
     Average wait time in queue:  583.8
     Maximum wait time in queue: 5507.0      Minimum wait time in queue:    0.0
     Average turnaround time:     11568 (seconds/job)
     Maximum turnaround time:     43294      Minimum turnaround time:        40
     Average hog factor of a job:  0.00 ( cpu time / turnaround time )
     Maximum hog factor of a job:  0.02      Minimum hog factor of a job:  0.00
     Total Run time consumed:    351504      Average Run time consumed:   10984
     Maximum Run time of a job: 1844674      Minimum Run time of a job:       0
     Total throughput:             0.24 (jobs/hour)  during  160.32 hours
     Beginning time:       Nov 11 17:55      Ending time:          Nov 18 10:14
    
    $ bacct -l -u bobbafett -q normal
    
    Accounting information about jobs that are: 
      - submitted by users bobbafett, 
      - accounted on all projects.
      - completed normally or exited
      - executed on all hosts.
      - submitted to queues normal, 
      - accounted on all service classes.
    ------------------------------------------------------------------------------
    
    Job <101>, User <bobbafett>, Project <default>, Status <EXIT>, Queue <normal>, 
                         Command <sleep 100000000>
    Wed Nov 11 17:37:45: Submitted from host <endor>, CWD <$HOME>;
    Wed Nov 11 17:55:05: Completed <exit>; TERM_OWNER: job killed by owner.
    
    Accounting information about this job:
         CPU_T     WAIT     TURNAROUND   STATUS     HOG_FACTOR    MEM    SWAP
          0.00     1040           1040     exit         0.0000     0M      0M
    ------------------------------------------------------------------------------
    ...