将 sar 输出文本文件的最后一个条目解析为新的文本文件
Parsing the last entry of a sar output text file to a new text file
我希望能够使用 sar 收集系统 CPU 信息,并希望有一个文件包含所有收集的数据,第二个文件只存储最后一个条目。
下面的输出将是我的 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.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 文件,如示例所示,但这是我真正苦苦挣扎的最后一部分。
在一个阶段,我设法将一个输出输出到 last_entry.txt 文件,但它不是最后一个条目,所以我猜我的脚本的那部分可能只执行一次。问题是,我不知道如何让它连续获取最后一个条目,直到我取消它。
这是我的脚本代码,它将 sar 的输出发送到一个文本文件,然后将第一个条目而不是最后一个条目发送到第二个文件。
sar -u 3 > measurements.txt & tail -1 measurements.txt > last_measurement.txt
问题出在 &
命令分隔符上。它会导致 sar
命令在后台执行 运行,而您在执行期间的某个不确定时间获取其输出文件的 current 最后一行。您希望 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
我希望能够使用 sar 收集系统 CPU 信息,并希望有一个文件包含所有收集的数据,第二个文件只存储最后一个条目。
下面的输出将是我的 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.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 文件,如示例所示,但这是我真正苦苦挣扎的最后一部分。
在一个阶段,我设法将一个输出输出到 last_entry.txt 文件,但它不是最后一个条目,所以我猜我的脚本的那部分可能只执行一次。问题是,我不知道如何让它连续获取最后一个条目,直到我取消它。
这是我的脚本代码,它将 sar 的输出发送到一个文本文件,然后将第一个条目而不是最后一个条目发送到第二个文件。
sar -u 3 > measurements.txt & tail -1 measurements.txt > last_measurement.txt
问题出在 &
命令分隔符上。它会导致 sar
命令在后台执行 运行,而您在执行期间的某个不确定时间获取其输出文件的 current 最后一行。您希望 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