我有以下脚本:
while :
do
clear;
echo "---------------------------RAM Load------------------------------$
free -mt >> memory.txt;
free -mt;
echo "---------------------------Temperature---------------------------$
sensors >> temp.txt;
sensors;
sleep 1;
clear;
done
获取当前系统 RAM 和温度并将其分别写入两个文件,memory.txt 和 temp.txt
我想在网络服务器上使用这些数据錄影 清理数据的最佳方法是什么,因为它给出了这两个文件:
对于 RAM 部分,我只想要线路-/+ buffers/cache:
,对于温度部分,我只想要温度。
答案1
您应该能够使用 来解决此问题grep
。
为了得到这一-/+ buffers/cache
行,请将free
命令改为:
free -mt | grep buffers/cache >> memory.txt;
free -mt | grep buffers/cache;
要仅获取温度,请尝试:
sensors | grep °C >> temp.txt;
sensors | grep °C;
因此使用以下脚本:
#!/bin/bash
clear;
echo "---------------------------RAM Load------------------------------$"
free -mt | grep buffers/cache >> memory.txt;
free -mt | grep buffers/cache;
echo "---------------------------Temperature---------------------------$"
sensors | grep °C >> temp.txt;
sensors | grep °C;
产生以下输出:
---------------------------RAM Load------------------------------$
-/+ buffers/cache: 1545 449
---------------------------Temperature---------------------------$
Physical id 0: N/A (high = +100.0°C, crit = +100.0°C)
Core 0: N/A (high = +100.0°C, crit = +100.0°C)
Physical id 2: N/A (high = +100.0°C, crit = +100.0°C)
Core 0: N/A (high = +100.0°C, crit = +100.0°C)
aploetz@dockingBay94:~$
为了删除您不想要的多余文本,您可以尝试使用awk
。
$ free -mt | grep buffers/cache | awk '{print $3"\t"$4}'
1588 406
温度会有些棘手,但可以做到tr
。
$ sensors | grep Physical | tr -d '(),' | awk '{print $7"\t"$10}'
+100.0°C +100.0°C
+100.0°C +100.0°C
$sensors | grep Core | tr -d '(),' | awk '{print $6"\t"$9}'
+100.0°C +100.0°C
+100.0°C +100.0°C
如果您还想删除加号,只需在删除标志中添加“+”即可:
$ sensors | grep Core | tr -d '(),+' | awk '{print $6"\t"$9}'
100.0°C 100.0°C
100.0°C 100.0°C
答案2
除了 Bryce 的好建议之外,没有必要运行两次命令:
free -mt | grep buffers/cache | tee -a memory.txt
sensors | grep °C | tee -a temp.txt