Awk 如何解析bhist日志
我正在使用IBMLSF,并试图获取特定时期内的使用统计数据。我发现Awk 如何解析bhist日志,awk,sed,lsf,Awk,Sed,Lsf,我正在使用IBMLSF,并试图获取特定时期内的使用统计数据。我发现bhist完成了这项工作,但是简短的bhist输出并没有显示我需要的所有字段 我想知道的是: bhist的输出字段是否可自定义?我需要的字段是: 如果1不可能,那么长格式(bhist-l)输出将显示我需要的所有内容,但格式很难操作。我在下面粘贴了一个格式示例 例如,记录之间的行数不是固定的,每个事件中的单词换行可能会打断我试图扫描的单词中间的行。如何使用sed和awk解析此格式 JobId <1531&
bhist
完成了这项工作,但是简短的bhist
输出并没有显示我需要的所有字段
我想知道的是:
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
——不切实际,甚至可能不可能,因为您发现格式不一致bhist
本身用来解析lsb.events
文件的函数。这是存储有关LSF集群的所有历史信息的文件,也是bList
读取以生成其输出的文件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
------------------------------------------------------------------------------
...