此命令将做什么

此命令将做什么
zcat -rf ~/dragon | sort | grep -iaE -A 5 'cpu[1-7].*(8[0-9]|9[0-9]|100)' | tee cpu.txt
  1. 这个命令会做什么?
  2. 各个命令如何发挥作用?

答案1

您所看到的内容取决于 dragon 目录中文件的内容。

  1. zcat -rf ~/dragon:查找~/dragon文件夹中的所有文件并将其内容发送到 stdout。使用 gzip 压缩的文件将在内容发送到 stdout 之前解压。我猜大多数文件都是文本或使用 gzip 压缩的文本。在我看来,这些是日志文件。由于 zcat 命令会解压所有文件,因此结果预计仅为文本。但是,该标志-f会强制zcat处理任何类型的文件,因此如果碰巧有二进制文件(例如照片或音频文件),其内容将发送到 stdout。zcat可以毫无问题地对 PB 进行操作。
  2. |前一个命令的输出(zcat 生成的文本)被输入到下一个命令的输入
  3. sort:行按字典顺序排序。请注意,sort 必须读取所有输入才能进行操作,因为您必须读取到最后一行才能正确排序所有行。几 Mb 没问题,几 Gb 可能对您的计算机来说很难,一百 Gb 或几 Tb 肯定会失败。排序后的行将发送到 stdout。
  4. |前一个命令的标准输出(即排序后的行)被输入到下一个命令
  5. 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])或100cpu由于该选项,这些行可以用大写或小写书写-igrep由于该选项,即使数据看起来不像文本,也会搜索数据-a(请记住 zcat-f选项)。-E启用扩展正则表达式,允许您表达更复杂的模式,并将-A 5打印匹配的行和接下来的 5 行,无论它们是否与搜索模式匹配。
  6. |...
  7. 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。

相关内容