移除netstat输出(特别是无法识别所有进程行)

5

我在检查当前端口是否被使用时,遇到了从netstat命令中删掉输出的问题。我只需要命令的错误代码,而不是命令的输出结果。

运行netstat -anp | grep 1521 &>/dev/null会得到:

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)

作为输出显示。我也尝试过:
2>/dev/null| cut -d' ' -f45-50 | sed 's/[^0-9]*//g'

执行该命令后,输出窗口会显示“Not all processes...”信息,但随后会出现一堆空行。

3个回答

6

最终我自己解决了问题。 请使用以下内容

netstat -taepn 2>/dev/null | grep -Po "\b(\d|\.)+:1521\b" 1>/dev/null

这适用于我只需要错误代码而不需要任何输出的情况。


6

对于我来说,被接受的答案并不起作用,在这里是CentOS6.5 32位。无论端口处于什么状态,它都没有输出任何内容。

我找到了我的解决方案:

netstat -antp 2>/dev/null | grep [port-num]

如果以普通用户身份执行netstat,则会省略前两行。
需要省略的警告两行是:
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)

这个功能适用于两种情况:

  1. 端口处于“LISTEN”状态
  2. 端口处于“TIME_WAIT”状态。

在我的情况下,我只需要错误代码而不一定需要任何输出,但我很高兴你能通过删除前两行来解决你的问题! - Zee
@Zee 或许我们使用的是不同的平台,所以你的答案适用于你的平台,而我的解决方案适用于我的平台,即CentOS6.5-32位。 - CodyChan
我想在这里补充说明,当找不到环境变量时,也会看到此消息。例如,在测试和创建shell变量的情况下,在下一个shell会话中该密码丢失时。 - Carmine Tambascia

-1

不是

netstat -anp

您可以使用以下方式进行检查

sudo netstat -anp 

这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接