Unix - 在 watch 命令中使用管道(计算按状态分组的连接数)

Unix - Using pipe inside watch command (Count connections groupped by state)

我正在尝试计算连接数量,同时按 'state' 对它们进行分组。

这个命令实现了那个目标:

netstat -ant | awk '{ print }' | sort | uniq -c

它提供的输出看起来像这样:

  4 CLOSE_WAIT
  1 established)
127 ESTABLISHED
  1 Foreign
  2 LAST_ACK
 39 LISTEN
  9 TIME_WAIT

我正在尝试将我的命令与 watch 命令结合起来:

watch -n 1 "netstat -ant | awk '{ print }' | sort | uniq -c"

但是,输出只是 netstat -ant 命令的输出(而不是管道的最后输出)。

如何使用 watch 的复杂命令?

这个有效:

watch -n1 "netstat -ant | awk '{ print $6}' | sort | uniq -c"

您传递的双引号字符串恰好包含单引号。在双引号字符串中,$s 意味着文字 $s 必须被转义(</code> => <code>$6)。 当你不逃避它时,watch 可能会收到

"netstat -ant | awk '{ print }' | sort | uniq -c"

(因为 </code> 可能未设置),这将解释您得到的输出(管道中的 <code>awk '{ print }' 本质上是空操作,例如 cat ).