我在Linux上使用了很多屏幕。我想稍微改变一下hardstatus线。 我想将CPU和内存使用信息添加到该行,但我不知道如何。 在谷歌进行一些搜索后,我发现只有%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}]'
我的屏幕hardstatus线是这样的:
现在有哪三个数字定义了广告加载?
如何将它们更改为CPU load 28% Mem Load 43%
或类似的东西?
答案 0 :(得分:3)
保持简短:
这三个数字代表最后一分钟,5分钟和15分钟的平均CPU负载,其中0表示0%负载,1.0表示100%负载。
看看这个cpu加载的excellent explanation。
对于第二个问题,我不确定您是否可以在屏幕的hardstatus行中使用只有一个号码表示系统负载(我不这么认为),但是我希望我的答案有所帮助;-) * Jost
答案 1 :(得分:0)
如果您从那时起就没有听说过屏幕命令 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”命令的输出中提取您的内存值,并进行一些在 this 精美文章中解释的计算,最终会得到一个名为 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}" '
这将使用“hardstatus string”定义中的转义序列“%1`”每 5 秒更新一次您的 hardstatus 或标题状态行中的值。
要进行更多计算,您将需要更多空间,这些空间必须全部在一行上。所以把它放在一个 shell 函数中并从你的 screenrc 文件中调用该函数:
backtick 1 5 5 /bin/bash -c '_mySystemLoadScreenFunction'
对我来说不起作用的是使用 $BASH 而不是完整路径。 这不起作用:
backtick 1 5 5 $BASH -c '_mySystemLoadScreenFunction'
希望,这有帮助。 非常感谢您的关注。