欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux - 查看端口的占用情况、找出并杀死占用进程的方法

程序员文章站 2022-04-10 15:44:51
本篇博文以 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 命令相对安全一点.

参考资料

linux中如何解除端口占用

版权声明

作者:

出处: 博客园

感谢阅读, 如果文章有帮助或启发到你, 点个[