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

[TOC]javascript

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
  • 注意: 若提示无此命令, 则须要安装, 命令以下:html

    [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(监听).java

1.3 杀死某个端口的全部进程

不建议经过 kill 的方式解决端口冲突问题! 某些极少的状况下是能够直接杀死进程、释放端口的, 好比某个 Tomcat 进程没有成功退出, 致使重启失败.linux

# 命令以下:
[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 的相关进程都会被结束掉 —— 务必慎用.shell

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(进程号)

说明:bash

-9参数表示告诉操做系统直接杀死进程, 不管进程的状态是否可杀死; 该命令只杀死某个进程, 比 killall 命令相对安全一点.服务器

<br/>ssh

参考资料

Linux中如何解除端口占用tcp

linux下如何搜索一个文件或程序所在位置

版权声明

做者: 马瘦风(https://healchow.com)

出处: 博客园 马瘦风的博客(https://www.cnblogs.com/shoufeng)

感谢阅读, 若是文章有帮助或启发到你, 点个[<a href="javascript:void(0);" onclick="DiggIt(11308614,cb_blogId,1);green_channel_success(this,'谢谢推荐😜');">好文要顶👆</a>] 或 [<a href="javascript:void(0);" onclick="votePost(11308614,'Digg')">推荐👍</a>] 吧😜

本文版权归博主全部, 欢迎转载, 但 [必须在文章页面明显位置标明原文连接], 不然博主保留追究相关人员法律责任的权利.

原文出处:https://www.cnblogs.com/shoufeng/p/11308614.html

相关文章
相关标签/搜索