红帽企业 Linux 服务器版本 5.4 (Tikanga) 2.6.18-164.el5
我正在尝试将 watch 命令与 netstat 结合使用来查看使用某些端口的 2 个程序。
但是,我在下面使用的命令对这两个词都不起作用:
watch -n1 "netstat -upnlt | grep gateway\|MultiMedia"
这是对两个程序名称进行 grep 的正确方法吗?
如果我使用一个就可以了,但两者一起不起作用。
对于您需要的 grep:
"grep gateway\|MultiMedia"
所以也许尝试:
watch -n1 'netstat -upnlt | grep "gateway\|MultiMedia"'
还有一种新的做事方式...... grep -E 很好且可移植(或 egrep,这对于 grep -E 在 linux&bsd 上非常快捷),因此您不必逃避引用。从手册页:
-E Interpret pattern as an extended regular expression (i.e. force
grep to behave as egrep).
所以...
watch "netstat -upnlt | grep -E 'gateway|multimedia'"
或者
watch "netstat -upnlt | egrep 'gateway|multimedia'"
我在监控 ssh 连接时遇到了类似的问题。
> netstat -tulpan|grep ssh
tcp 0 0 192.168.2.52:58072 192.168.2.1:22 ESTABLISHED 31447/ssh
但是watch -n 1 'netstat -tulpan|grep ssh'
没有显示输出(除了来自手表的消息)。如果我将其更改为watch -n 1 'netstat -tulpan|grep ":22"'
我得到所需的输出行。当 netstat 通过 watch 运行时,似乎忽略了 -p 选项。奇怪的。