繁体   English   中英

系统在 GNU 屏幕的 hardstatus 行中加载

[英]system loads in GNU screen's hardstatus line

我在 Linux 上经常使用 screen。 我想稍微改变一下 hardstatus 线。 我想在行中添加 CPU 和内存使用信息,但我不知道如何。 在 Google 中进行了一些搜索后,我只能找到 %l 选项来添加系统负载。

我的行(已复制)如下所示:

hardstatus alwayslastline '%{= G}[ %{G}%H %{g}][%= %{= w}%?%-Lw%?%{= R}%n*%f %t%?%{= R}(%u)%?%{= w}%+Lw%?%= %{= g}][ %{y}Load: %l %{g}][%{B}%D %d-%    M-%Y %{W}%C:%s %A %{g}]'

我的屏幕硬状态线是这样的:在此处输入图片说明

现在定义的广告负载的三个数字是什么? 以及如何将它们更改为CPU load 28% Mem Load 43%或类似的内容?

为了保持简短:

这三个数字代表最后一分钟、5 分钟和 15 分钟的平均 CPU 负载,其中 0 表示 0% 负载,1.0 表示 100% 负载。

看看这个关于cpu 负载的优秀解释

对于第二个问题,我不确定您是否可以在屏幕的 hardstatus 行中仅用一个数字表示系统负载(我不这么认为),但我希望我的回答对您有所帮助;-) *Jost

如果您从那时起还没有听说过 screen 命令backtick ,这可能是您的最爱( http://aperiodic.net/screen/commands:backtick )。

例如,您可以定义一系列 linux($BASH 或 sh)命令,这些命令在backtick命令中回显您自己计算的负载值和您自己计算的内存使用值。

在此示例中,我们假设您只想显示“正常运行时间”(5 分钟统计信息)给出的“平均负载”统计信息的第二个值。

第 1 步:如果您的“正常运行时间”输出如下所示(行首有一个空格,“平均负载:”前有 2 个空格)...

 17:04:06 up 3 days, 21:52, 12 users,  load average: 0.36, 0.27, 0.21

...您可以将这样的值提取到变量 cpuLoad 中(并去掉尾随的“逗号”):

cpuLoad=$(cut -s -d\  -f13 <(uptime))
cpuLoad=${cpuLoad:0:-1}

第 2 步:类似地,您可以从“free”命令的输出中提取内存值,并进行一些在这篇精美文章中解释的计算,最终会得到一个名为 memLoad(此处缩写为“memLoad=...”)的变量。

第 3 步:将所有内容放在一起并按照您的意愿回显您的输出:

backtick 1 5 5 /bin/bash -c 'cpuLoad=$(cut -s -d\  -f13 <(uptime)); cpuLoad=${cpuLoad:0:-1}; memLoad=...; echo "CPU load ${cpuLoad} Mem Load ${memLoad}" '

这将每 5 秒更新一次 hardstatus 或标题状态行中的值,使用“hardstatus string”定义中的转义序列“%1`”。

对于更多计算,您将需要更多空间,这些空间必须全部在一行上。 所以把它放在一个 shell 函数中并从你的 screenrc 文件中调用该函数:

backtick 1 5 5 /bin/bash -c '_mySystemLoadScreenFunction'

对我来说也不起作用的是使用 $BASH 而不是完整路径。 这不起作用:

backtick 1 5 5 $BASH -c '_mySystemLoadScreenFunction'

希望这可以帮助。 非常感谢您的关注。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM