在 Linux 系统的使用中,经常会有端口占用的情况发生,导致程序无法安装,正常运行,稍微懂一点计算机网络的大家都知道,当一个程序占用了某个端口之后,这个端口就不能再被其他程序使用了。经常有朋友问老鬼 CentOS,Ubuntu,Debian 系统这出了问题那出了问题,前几步检查必查的就是端口占用。那么怎么去检测查看,Linux系统的端口占用情况呢?老鬼这里介绍几种常见和通用的办法。
老鬼的博客原创文章保留所有权利,允许提前告知并保留原文链接的转载,任何无视版权的行为将吃到搜索引擎的 DMCA 投诉,请了解。
二、方法
首先,当你无法运行以下命令时候,请检查是否已经安装相应软件,您可以用以下命令安装:
# 安装 netstat 需要的组件 $ yum install net-tools # CentOS 系列系统 $ apt-get install net-tools # Ubuntu 和 Debian 系列系统
# 安装 lsof $ yum install lsof # CentOS 系列系统 $ apt-get install lsof # Ubuntu 和 Debian
netstat
netstat 的用法参数如下:
- -a 显示所有连接
- -t 显示TCP端口
- -u 显示UDP端口
- -l 仅显示套接字监听的端口
- -n 用数字显示ip和端口
- -p 显示端口对应的进程PID和名字
所以我们就可以这么查看
$ netstat -atunp # 查看已经建立连接的端口情况命令 $ netstat -tunlp #显示所有服务器端口监听使用情况
当80端口被占用的时候可以这么用
$ netstat -tunlp | grep 80 # 查看80端口情况
lsof
lsof 的功能也比较强大,这里我们用到的是 -i 参数,用法如下
lsof -i # 列出所有端口情况 lsof -i:[端口] # [端口] 换成在要查询的占用端口 # 如查询 80 端口 lsof -i:80
三、后记
查询到端口占用后,不一定非要杀死这个进程。也可以换一个没被占用的端口用,如果无法更改端口,又决心如果决心想用相应端口,可以用 kill 命令杀死对应占用程序。
$ kill -9 [pid] # [pid] 换成在上面命令获得的进程PID