删除 netstat 输出(特别是不能识别所有进程的行)

Zee*_*Zee 1 unix bash shell netstat io-redirection

当我检查是否正在使用当前端口时,我无法从 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.)
Run Code Online (Sandbox Code Playgroud)

显示为输出。我也试过:

2>/dev/null| cut -d' ' -f45-50 | sed 's/[^0-9]*//g'
Run Code Online (Sandbox Code Playgroud)

这只会在 Not all processes... 输出之后产生一堆空行,但仍然在输出中显示。

Cod*_*han 6

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

我找到了我的解决方案:

netstat -antp 2>/dev/null | grep [port-num]
Run Code Online (Sandbox Code Playgroud)

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.)
Run Code Online (Sandbox Code Playgroud)

并适用于两种情况:

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


Zee*_*Zee 5

最终解决了我自己的问题。使用以下

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

当我只想要错误代码而没有输出时,这特定于我的情况