我可以从 bash 运行任何命令来告诉我端口是否已经打开?
答案1
使用“netstat”检查当前使用的端口。
网络状态监测 Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称 tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* 侦听 16297/命名 tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* 侦听 16297/命名 tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* 侦听 16297/命名 tcp 0 0 127.0.0.1:53 0.0.0.0:* 侦听 16297/命名
答案2
这个(netstat)是最快的解决方案......
netstat -lnt
...但这会给你更多的控制权(以速度为代价(有时会降低很多速度))...
lsof -n -i -a -u www-data
例如,上面的例子显示了所有 TCP 端口处于打开状态LISTEN
并且 ( -a
) 属于 Apache ( www-data
) 用户。
答案3
答案4
netstat -tlnp
显示t
正在监听的 cp 端口l
,仅显示n
端口号(不解析名称 - 使其更快)并显示p
正在进行监听的进程(p
仅当您是 root 时才有效)
netstat -ulnp
显示u
正在监听的 dp 端口l
,仅显示n
号码(不解析名称 - 使其更快)并显示p
正在进行监听的进程(p
仅当您是 root 时才有效)
netstat -unp
显示u
打开但未监听的 dp 端口,n
仅显示端口号(不解析名称-使其更快)并显示p
正在进行监听的进程(p
仅当您是 root 时才有效)
netstat -an
显示a
所有正在使用的端口,n
仅显示号码 - 不解析名称
lsof -i <proto>@<host>:<port>
例如
lsof -i tcp@localhost:25
查看是否有任何东西在监听 localhost 25/TCP 端口,或者
lsof -i [email protected]:636
查看是否有任何套接字(本地或远程)正在监听(本地)或连接到(本地或远程)任何主机/接口