zcat -rf ~/dragon | sort | grep -iaE -A 5 'cpu[1-7].*(8[0-9]|9[0-9]|100)' | tee cpu.txt
- 这个命令会做什么?
- 各个命令如何发挥作用?
答案1
您所看到的内容取决于 dragon 目录中文件的内容。
zcat -rf ~/dragon
:查找~/dragon
文件夹中的所有文件并将其内容发送到 stdout。使用 gzip 压缩的文件将在内容发送到 stdout 之前解压。我猜大多数文件都是文本或使用 gzip 压缩的文本。在我看来,这些是日志文件。由于 zcat 命令会解压所有文件,因此结果预计仅为文本。但是,该标志-f
会强制zcat
处理任何类型的文件,因此如果碰巧有二进制文件(例如照片或音频文件),其内容将发送到 stdout。zcat
可以毫无问题地对 PB 进行操作。|
前一个命令的输出(zcat 生成的文本)被输入到下一个命令的输入sort
:行按字典顺序排序。请注意,sort 必须读取所有输入才能进行操作,因为您必须读取到最后一行才能正确排序所有行。几 Mb 没问题,几 Gb 可能对您的计算机来说很难,一百 Gb 或几 Tb 肯定会失败。排序后的行将发送到 stdout。|
前一个命令的标准输出(即排序后的行)被输入到下一个命令grep -iaE -A 5 'cpu[1-7].*(8[0-9]|9[0-9]|100)'
:它会过滤文本行。只打印与搜索模式匹配的行。具体搜索什么?任何包含单词的行,该单词cpu
带有 1 到 7 之间的数字(cpu[1-7]
),然后是任何数字(.*
),然后是 8 和另一位数字(8[0-9]
),9 和另一位数字(9[0-9]
)或100
。cpu
由于该选项,这些行可以用大写或小写书写-i
。grep
由于该选项,即使数据看起来不像文本,也会搜索数据-a
(请记住 zcat-f
选项)。-E
启用扩展正则表达式,允许您表达更复杂的模式,并将-A 5
打印匹配的行和接下来的 5 行,无论它们是否与搜索模式匹配。|
...tee cpu.txt
将输入(来自前面命令的行)打印到 stdout(此时很可能是您的屏幕)和名为cpu.txt
那么你会得到什么呢?同样,很难确切地说,但肯定有几行文字表明哪个处理器的使用率超过 80%。可能是这样的:
2022-10-11T21:42:17.12451 warning CPU3 went mad at 98% usage for more than 1 minute. Over heating
bla bla bla 1
bla bla bla 2
bla bla bla 3
2022-10-11T21:43:02.5460 warning cpu2 at 86% usage for more than 3 days. consider upgrading your hardware
bla bla bla 1
bla bla bla 2
bla bla bla 3
bla bla bla 4
bla bla bla 5
如果您没有看到任何内容,则表示您的文件中没有超过 80% 的 CPU。