-1

我希望能够使用 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 输出发送到 measurement.txt 文件,但这是我真正苦苦挣扎的最后一部分。

在某个阶段,我设法将一个输出输出到 last_entry.txt 文件,但它不是最后一个条目,所以我猜测我的脚本的那部分可能只执行一次。问题是,我不知道如何让它连续获取最后一个条目,直到我取消它。

这是我的脚本代码,它将 sar 的输出发送到文本文件,然后将第一个条目而不是最后一个条目发送到第二个文件。

sar -u 3 > measurements.txt & tail -1 measurements.txt  > last_measurement.txt
4

1 回答 1

1

问题在于&命令分隔符。 当您在执行期间的某个不确定时间获取其输出文件的当前最后一行时,它会导致sar命令在后台运行。你想完成,然后运行。sartail

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
于 2015-01-28T16:46:48.903 回答