Ale*_*hou 5 linux netstat lsof
我今天遇到一个问题:
当我启动HDP docker容器时,发生错误:
监听TCP 0.0.0.0:8086:绑定:地址已在使用中
根据错误消息,我知道端口8086已被使用,因此我尝试了一些命令来确定哪个程序正在使用端口8086。
lsof -i:8086
lsof -i tcp:8086
lsof | grep 8086
但是以上所有命令都没有输出!
我对此感到非常困惑,在Google上进行了一些搜索之后,我尝试了另一个命令:
netstat -pna | grep 8086
我从此命令获得正确的输出。
我知道lsof和之间的一些区别netstat,但是我真的不知道为什么我不能从lsof -i:8086?获得任何输出。
这是我从Google搜索到的两个命令之间的一些区别:
netstat(net statistic)是基于连接的,它显示NW连接(udp / tcp端口),路由表,接口,多播成员身份等。
lsof(打开文件列表)是基于应用程序的,类似于netstat + ps,在那里您可以看到所有访问的端口,NW连接等。但是lsof包括诸如本地emacs窗口终端会话(tty dev / pts / n)不属于netstat
我今天遇到了类似的问题。解决方案是使用 sudo 权限运行 lsof 命令。
sudo lsof -i:8086
Run Code Online (Sandbox Code Playgroud)
应该打印所需的输出。
LSOF:打开文件列表。它列出了属于所有活动进程的所有打开文件。
例子:
sudo lsof -n -i
sudo lsof -n -i4
sudo lsof -n -i :80
Run Code Online (Sandbox Code Playgroud)
NETSTAT:这是一个获取网络统计信息的工具。默认情况下,netstat 显示打开的套接字列表。如果不指定任何地址族,则将打印所有配置的地址族的活动套接字。
显示内核路由表:
netstat -r
Run Code Online (Sandbox Code Playgroud)
显示 TCP 和 UDP 的所有侦听和已建立连接以及 PID 数据:
netstat -plunt
Run Code Online (Sandbox Code Playgroud)
此外,您还可以使用另一个命令行工具,那就是 SS。
SS:用于转储套接字统计信息。它允许显示类似于 netstat 的信息。与其他工具相比,它可以显示更多的 TCP 和状态信息。
-plunt给出已建立并侦听进程信息的 TCP 和 UDP 连接的数据:
sudo ss -plunt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |