今天我遇到了一个问题:
当我启动HDP docker容器时,出现了一个错误:
listen tcp 0.0.0.0:8086: bind: address already in use
根据错误消息,我知道端口8086已经被占用,所以我尝试了一些命令来确定哪个程序正在使用端口8086。
lsof -i:8086
lsof -i tcp:8086
lsof | grep 8086
但是所有上述的命令都没有输出!
我对此感到非常困惑,在谷歌上搜索了一些内容后,我尝试了另一个命令:
netstat -pna | grep 8086
我从这个命令中得到了正确的输出结果。
我知道“lsof”和“netstat”之间存在一些差异,但我真的不知道为什么我无法从“lsof -i:8086”获得任何输出呢?
以下是我从Google上搜索到的两条命令之间的一些区别:
netstat(网络统计)是基于连接的,它显示NW连接(udp/tcp端口)、路由表、接口、多播成员等。
lsof(打开文件列表)是基于应用程序的,这有点像netstat+ps,您可以看到所有访问的端口、NW连接等,但lsof包括诸如我的本地emacs窗口终端会话(tty dev/pts/n)之类的内容,这不是netstat的一部分。
为什么 lsof -i:8086 没有工作
?否则你只会得到谷歌和 man 手册上的答案。 - C0deDaedalus