Python 将sar输出文本文件的最后一个条目解析为新文本文件
我希望能够收集系统的CPU信息使用合成孔径雷达,并希望有一个文件,其中包含所有收集的数据和第二个文件,其中只存储最后一个条目 下面的输出将是my measurements.txt文件Python 将sar输出文本文件的最后一个条目解析为新文本文件,python,bash,sar,Python,Bash,Sar,我希望能够收集系统的CPU信息使用合成孔径雷达,并希望有一个文件,其中包含所有收集的数据和第二个文件,其中只存储最后一个条目 下面的输出将是my measurements.txt文件 14:54:45 CPU %user %nice %system %iowait %steal %idle 14:54:48 all 6.12 0.00 35.03 2.72 0.00 56.1
14:54:45 CPU %user %nice %system %iowait %steal %idle
14:54:48 all 6.12 0.00 35.03 2.72 0.00 56.12
14:54:51 all 6.23 0.00 34.60 0.00 0.00 59.17
14:54:54 all 9.69 0.00 47.75 0.35 0.00 42.21
14:54:57 all 5.23 0.00 31.71 1.39 0.00 61.67
14:55:00 all 7.14 0.36 33.21 0.00 0.00 59.29
14:55:03 all 6.23 0.00 32.53 1.04 0.00 60.21
14:55:06 all 7.89 0.00 30.82 0.00 0.00 61.29
14:55:09 all 8.51 0.00 31.91 3.55 0.00 56.03
从14:55:09开始的最后一个条目将是我的last_entry.txt文件中的唯一条目
然而,每当我尝试这样做时,我都无法从我的last_entry.txt文件中的sar命令中获取最后一个条目。我已经能够将sar输出发送到measurements.txt文件,如示例所示,但这是我真正正在努力解决的最后一部分
在某个阶段,我成功地将一个输出输出到最后一个_entry.txt文件,但它不是最后一个条目,所以我猜可能我的脚本的这一部分只执行了一次。问题是,在我取消它之前,我不知道如何让它连续获取最后一个条目
下面是我的脚本代码,它将sar的输出发送到一个文本文件,然后将第一个条目而不是最后一个条目发送到第二个文件
sar -u 3 > measurements.txt & tail -1 measurements.txt > last_measurement.txt
问题在于
和命令分隔符。它使sar
命令在后台运行,同时在执行过程中的某个不确定时间获取其输出文件的当前最后一行。您希望sar
完成,然后运行tail
sar -u 3 > measurements.txt ; tail -1 measurements.txt > last_measurement.txt
或者更习惯地说只是
sar -u 3 > measurements.txt
tail -1 measurements.txt > last_measurement.txt
或者使用tee
将其全部保存在一个管道中
sar -u 3 | tee measurements.txt | tail -n 1 >last_measurement.txt
你能分享你的代码吗?很抱歉没有在我最初的帖子@kobik中分享。不幸的是,当我尝试这两个命令时,它们都不起作用,没有任何东西被写入最后的_measurements.txt文件,只有measurements.txt文件。在sar
输出的末尾有空行吗?tail-n1 measurements.txt
是否也不输出任何内容?在这里取得了一些进展,我将您的上一个建议调整为'sar-u3 10 | tee measurement.txt;tail-n 1 measurement.txt>last_measurement.txt',这是添加measurement.txt文件的最后一行,即过去30秒的平均值。tee
则是多余的(除非您也希望输出到屏幕)。你所得到的与中间的建议相当。