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

时间:2017-11-20 16:35:31

标签: unix pipe netstat

我试图计算连接数量,同时按照“状态”对它们进行灌输。

此命令实现了这一目标:

netstat -ant | awk '{ print $6}' | 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 $6}' | sort | uniq -c"

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

如何将该复杂命令与watch一起使用?

1 个答案:

答案 0 :(得分:2)

这有效:

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

您传递的是一个双引号字符串,恰好包含单引号。在双引号字符串中,$表示文字$必须转义($6 => \$6)。 当你不逃避它时,watch可能会收到

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

(由于$6可能未设置),这可以解释您获得的输出(管道中的awk '{ print }'基本上是无操作,如cat)。