Linux - 查看端口的占用情况、找出并杀死占用进程的方法
程序员文章站
2022-07-04 22:53:41
本篇博文以 Cent OS 为例, 演示 Linux 系统下如何查看某个网络端口的占用情况, 并找出占用某个端口的进程, 以及杀死相关进程的方法. ......
目录
1 lsof查看端口的占用情况
1.1 命令使用示例
# 命令为 lsof -i [root@onepiece ~]# lsof -i # 将会显示 命令 + 进程id + 进程所属用户, 以及监听的协议、状态等信息 command pid user fd type device size/off node name dhclient 728 root 6u ipv4 11262 0t0 udp *:bootpc ntpd 839 ntp 16u ipv4 13671 0t0 udp *:ntp ntpd 839 ntp 18u ipv4 13677 0t0 udp localhost:ntp
-
注意: 若提示无此命令, 则需要安装, 命令如下:
[root@onepiece ~]# lsof -i -bash: lsof: command not found [root@onepiece ~]# yum install -y lsof ...... installed: lsof.x86_64 0:4.87-6.el7 complete! # 出现上述的 "complete!",说明安装成功。
1.2 查看某一端口的占用情况
# 比如查看80端口的占用情况,命令为: [root@onepiece ~]# lsof -i:22 command pid user fd type device size/off node name sshd 3187 root 3u ipv4 16278 0t0 tcp *:ssh (listen) sshd 9528 root 3u ipv4 4436480 0t0 tcp onepiece:ssh->120.253.xx.xx:30214 (established)
这里显示出22号端口正被sshd所使用, 状态是listen(监听).
1.3 杀死某个端口的所有进程
不建议通过 kill 的方式解决端口冲突问题!
某些极少的情况下是可以直接杀死进程、释放端口的, 比如某个 tomcat 进程没有成功退出, 导致重启失败.
# 命令如下: [root@onepiece ~]# killall sshd # 这样,所有sshd的进程都会被结束掉 —— 我这里通过ssh远程操作阿里云服务器, 杀死之后将退出连接, 提示如下: connection to 47.52.xx.xx closed by remote host. connection to 47.52.xx.xx closed. # 此时需要从阿里云控制台通过终端进入, 并开启sshd服务, 命令如下: service sshd start
这样, 所有与 sshd 的相关进程都会被结束掉 —— 务必慎用.
2 netstat查看端口占用情况
2.1 命令使用示例
# 命令示例如下: [root@onepiece ~]# netstat -anp | grep 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* listen 9646/sshd tcp 0 36 172.31.xx.xx:22 120.253.xx.xx:30307 established 9649/sshd: root@pts unix 2 [ ] dgram 15722 476/dbus-daemon unix 3 [ ] stream connected 11122 476/dbus-daemon
可以看出22端口被9646号进程监听着.
2.2 查看占用某个端口的进程
# 命令为fuser: [root@onepiece ~]# fuser -v -n tcp 22 user pid access command 22/tcp: root 9646 f.... sshd root 9649 f.... sshd
2.3 杀死某个端口的占用进程
[root@onepiece ~]# kill -s 9 9646(进程号)
说明:
-9
参数表示告诉操作系统直接杀死进程, 无论进程的状态是否可杀死;
该命令只杀死某个进程, 比killall
命令相对安全一点.
参考资料
版权声明
作者:
出处: 博客园