我正在编写一个程序,需要了解系统上的当前负载以及任何用户的活动(它是负载均衡器)。
这是一项大学任务,我需要使用w
命令。我很难解析这个命令,因为它非常详细。任何关于我能做什么的建议都将不胜感激。这是该计划的一小部分,我可以随意使用我喜欢的任何方法。
仍然拥有我需要的信息的最简洁的w版本是`w -u -s -f',它产生了这个:
10:13:43 up 9:57, 2 users, load average: 0.00, 0.00, 0.00
USER TTY IDLE WHAT
fsm tty7 22:44m x-session-manager
fsm pts/0 0.00s w -u -s -f
因此,我对加载平均后的第一个数字和最小的空闲时间感兴趣(所以我需要解析它们)。
我的后台进程将调用w,因此w是最低空闲时间的事实无关紧要(我将看到的是tty时间)。
你有什么想法吗?
由于
(我可以使用替代的unix命令,比如grep,如果有帮助的话)。
答案 0 :(得分:0)
您是否可以使用其他Unix命令?您可以使用grep
,sed
或head
/ tail
来获取所需的行,并cut
根据需要将其拆分。
答案 1 :(得分:0)
[0-9]+\.[0-9]{2}
。你可能不得不摆弄哪些字符被转义。这将为您提供3个平均负载。另一个可能的理论(听起来它违背了作业,但我会记住它)是抓住w的源代码并将其破解,只是通过函数调用告诉你信息。如果你感觉真的很铁杆,你可以学习所有的库api调用,并直接这样做。
答案 2 :(得分:0)
我发现我可以使用这样的命令组合:
w -u -s -f | grep load | cut -d“” - f 11
和
w -u -s -f | grep tty | cut -d“” - f 13
第一个接受w的输出,使用grep只选择带有加载的行,然后切除除第11个数据块(分隔符是空格)之外的所有内容,这是第一个带逗号的加载号。 / p>
第二个做类似的事情,仅针对用户负载。如果有多个负载,则为一个列表。
这很容易解析,除非有人有异议,或建议改进它。