如果从那时起您还没有听说过 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 字符串”定义中的转义序列“%1`”。
对于更多计算,您将需要更多空间,这些空间必须全部在一行上。所以把它放在一个shell函数中,然后从你的screenrc文件中调用这个函数:
backtick 1 5 5 /bin/bash -c '_mySystemLoadScreenFunction'
对我也不起作用的是使用 $BASH 而不是完整路径。这不起作用:
backtick 1 5 5 $BASH -c '_mySystemLoadScreenFunction'
希望这可以帮助。非常感谢您的关注。