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
).
我正在尝试计算连接数量,同时按 '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
).