Linux命令之杀掉被占用的端口号

前言

  • 场景介绍

    项目启动失败或者启动成功访问报404,很可能是访问端口被占用导致,记录一下杀死被占用端口的常用命令,共同学习

实现过程

方案1

  • 查找被占用的端口号

    
        netstat -tln | grep 8081
    
        netstat  -anp  | grep  8081  # 显示正在使用Socket的程序识别码和程序名称
    
    
    

    查找被占用的端口

    如图,最后一列监控状态为 LISTEN 表示已经被占用

    此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了

  • 查找被占用的端口PID

    以普通用户操作,故加上了sudo,如果是以root用户操作,不用加sudo即可查看

    
        sudo lsof -i:8081
    
    
    

    查找被占用端口的PID

  • kill对应进程

    
        kill -9 29686
    
    

方案2

  • 一个命令关闭某个端口占用

    	 # 这个命令亲测不好使,欢迎解答原因
        kill netstat -nlp | grep :端口号| awk '{print $7}' | awk -F"/" '{ print $1 }' 
    
    
    

命令详解

ps

  • 选项介绍

    -A 显示所有进程(等价于-e)(utility)
    -a 显示一个终端的所有进程,除了会话引线
    -N 忽略选择。
    -d 显示所有进程,但省略所有的会话引线(utility)
    -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
    -p pid 进程使用cpu的时间
    -u uid or username 选择有效的用户id或者是用户名
    -g gid or groupname 显示组的所有进程。
    U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
    -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
    -l 长格式(有F,wchan,C 等字段)
    -j 作业格式
    -o 用户自定义格式。
    v 以虚拟存储器格式显示
    s 以信号格式显示
    -m 显示所有的线程
    -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
    e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
    h 不显示第一行

  • 常用指令

    
    
        ps -ef | grep tomcat    # ps 与grep 常用组合用法,查找特定进程,连同命令行
    
        ps -aux | grep tomcat
    
    

netstat

  • 选项介绍

    -a或–all:显示所有连线中的Socket
    -A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
    -c或–continuous:持续列出网络状态;
    -C或–cache:显示路由器配置的快取信息;
    -e或–extend:显示网络其他相关信息;
    -F或–fib:显示FIB;
    -g或–groups:显示多重广播功能群组组员名单;
    -h或–help:在线帮助;
    -i或–interfaces:显示网络界面信息表单;
    -l或–listening:显示监控中的服务器的Socket
    -M或–masquerade:显示伪装的网络连线;
    -n或–numeric:直接使用ip地址,而不通过域名服务器
    -N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
    -o或–timers:显示计时器;
    -p或–programs:显示正在使用Socket的程序识别码和程序名称
    -r或–route:显示Routing Table;
    -s或–statistice:显示网络工作信息统计表;
    -t或–tcp:显示TCP传输协议的连线状况
    -u或–udp:显示UDP传输协议的连线状况;
    -v或–verbose:显示指令执行过程;
    -V或–version:显示版本信息;
    -w或–raw:显示RAW传输协议的连线状况;
    -x或–unix:此参数的效果和指定"-A unix"参数相同;
    –ip或–inet:此参数的效果和指定"-A inet"参数相同。

  • 常用指令

    
    
        netstat -at              # 列出所有TCP端口
        netstat -lt              # 显示监听TCP端口
        netstat -st              # 显示所有TCP的统计信息
        netstat -p               # 显示 PID 和进程名称
        netstat -r               # 路由信息
        netstat -antp | grep ssh # 查看服务
        netstat -antp | grep 22  # 查看端口  n 显示ip p显示程序
    
    
    
    

lsof

  • 选项介绍

    lsof filename 显示打开指定文件的所有进程
    lsof -a 表示两个参数都必须满足时才显示结果
    lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
    lsof -u username 显示所属user进程打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /DIR/ 显示目录下被进程打开的文件
    lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
    lsof -d FD 显示指定文件描述符的进程
    lsof -n 不将IP转换为hostname,缺省是不加上-n参数
    lsof -i 用以显示符合条件的进程情况

    lsof -i46@hostname|hostaddr
    46 –> IPv4 or IPv6
    protocol –> TCP or UDP
    hostname –> Internet host name
    hostaddr –> IPv4地址
    service –> /etc/service中的 service name (可以不只一个)
    port –> 端口号 (可以不只一个)

  • 常用指令

    
        lsof -i:4000  # 查看所属root用户进程所打开的文件类型为txt的文件:
    
    
    
    

参考链接

  • Linux 如何kill杀死(关闭)某个被占用的端口

    https://blog.csdn.net/qq_39213969/article/details/103857714

  • LINUX中如何查看某个端口是否被占用

    https://www.cnblogs.com/hindy/p/7249234.html

  • ps 命令详解

    https://blog.csdn.net/freeking101/article/details/53444530

  • inux系统下ps -aux和ps -ef命令参数的作用及区别详解

    https://cloud.tencent.com/developer/article/1357618

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值