这个命令会做什么

0 scripts

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

exo*_*ore 6

您将看到的内容取决于 Dragon 目录中文件的内容。

  1. zcat -rf ~/dragon:查找~/dragon文件夹中的所有文件并将其内容发送到stdout。使用 gzip 压缩的文件将在其内容发送到 stdout 之前解压缩。我猜大多数文件要么是文本,要么是用 gzip 压缩的文本。在我看来,这些是日志文件。由于 zcat 命令解压缩所有文件,因此结果预计仅为文本。但是,该-f标志强制zcat处理任何类型的文件,因此如果碰巧有二进制文件(例如照片或音频文件),其内容将被发送到标准输出。zcat可以毫无问题地运行 PB。
  2. |上一个命令的输出(由 zcat 生成的文本)被馈送到下一个命令的输入
  3. sort:这些行按字典顺序(字典顺序)排序。请注意,排序必须读取所有输入才能进行操作,因为您必须读取到最后一行才能正确对所有行进行排序。几 Mb 还可以,几 Gb 对您的计算机来说可能会很困难,一百 Gb 或几 Tb 肯定会失败。排序后的行被发送到标准输出。
  4. |上一个命令的标准输出(即排序行)被馈送到下一个命令
  5. grep -iaE -A 5 'cpu[1-7].*(8[0-9]|9[0-9]|100)':它过滤文本行。仅打印与搜索模式匹配的行。具体搜索什么?任何包含包含cpu1 到 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将输入(来自先前命令的行)打印到标准输出(此时很可能是您的屏幕)和名为的文件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
Run Code Online (Sandbox Code Playgroud)

如果您没有看到任何内容,则表明您的文件中没有 CPU 使用率超过 80%。