端口被占用的解决办法、netstat命令;Linux ps命令详解,Linux查看进程

文章目录

  • 一、端口被占用的原因
  • 二、端口被占用的解决方法
    • 2.1 Windows系统
    • 2.2 Linux系统
  • 三、Linux命令补充
    • 3.1 Linux查看端口占用情况
    • 3.2 netstat命令详解
    • 3.3 ps命令
      • 3.3.1 常用命令
      • 3.3.2 拓展命令
      • 3.3.3 字段补充

运行软件或程序时,有时会出现以下问题、导致运行失败:

Web server failed to start. Port 8080 was already in use.

表示8080端口被占用,程序启动失败。

前言:注意区分 端口、进程号pid、服务名字。以redis服务为例

在这里插入图片描述

端口为 6379,进程号为 2179,服务名称为 redis

一、端口被占用的原因

  1. 进程未正确释放端口:当一个进程退出时,如果它没有正确释放占用的端口,其他进程就无法使用该端口。
  2. 同一端口被多个进程监听:在某些情况下,多个进程可能尝试同时监听同一个端口,导致端口占用冲突。
  3. 非法软件或恶意程序:一些非法软件或恶意程序可能会占用系统的端口,以进行非法活动或攻击。

二、端口被占用的解决方法

2.1 Windows系统

  • window键+R 进入cmd,输入netstat -aon | findstr 8080/端口号 , 找到占用8080端口的进程号,获取对应的进程号pid(最右侧)
  • 输入 tasklist | findstr 3412/pid,查看进程号为3412/pid对应的进程名称
  • taskkill /f /t /im QQ.exetaskkill /f /t /im 3412,结束这个进程【taskkill /f /t /im 进程号PID或进程名称】;或者打开任务管理器,定位该进程、而后结束进程

示例:假设8889的端口被占用

在这里插入图片描述

上图中最后一步 杀掉进程可使用 taskkill /f /t /im 10744,或者 taskkill /f /t /im java.exe

补充

netstat -ano                  #查看所有端口的占用情况
netstat -aon | findstr 8889   #查看指定端口的占用情况tasklist                      #查找所有进程号对应的名称
tasklist | findstr pid        #查找所有特定进程号对应的名称

netstat -aon #查看所有端口的占用情况,从左至右依次是 协议、本地地址、外部地址、状态、进程号PID

在这里插入图片描述

C:\Users\28687>netstat --help显示协议统计信息和当前 TCP/IP 网络连接。NETSTAT [-a] [-b] [-e] [-f] [-i] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]-a            显示所有连接和侦听端口。-b            显示在创建每个连接或侦听端口时涉及的可执行文件。在某些情况下,已知可执行文件托管多个独立的组件,此时会显示创建连接或侦听端口时涉及的组件序列。在此情况下,可执行文件的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且可能因为你没有足够的权限而失败。-e            显示以太网统计信息。此选项可以与 -s 选项结合使用。-f            显示外部地址的完全限定域名(FQDN)。-i            显示 TCP 连接在当前状态所花费的时间。-n            以数字形式显示地址和端口号。-o            显示拥有的与每个连接关联的进程 ID。-p proto      显示 proto 指定的协议的连接;proto可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。-q            显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。-r            显示路由表。-s            显示每个协议的统计信息。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。-t            显示当前连接卸载状态。-x            显示 NetworkDirect 连接、侦听器和共享终结点。-y            显示所有连接的 TCP 连接模板。无法与其他选项结合使用。interval      重新显示选定的统计信息,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计信息。如果省略,则 netstat 将打印当前的配置信息一次。

在这里插入图片描述

2.2 Linux系统

  • netstat -tunlp | grep 3306/端口号lsof -i:port 查看端口占用情况及对应进程
  • kill -9 进程号pid,杀掉进程

在这里插入图片描述

netstat -tunlp | grep 6379输出结果中,LISTEN 表示被占用,2151/redis-server 分别是:进程PID/进程名(或者通过命令查找进程PID,lsof -i:6379)。通过进程PID关闭进程。

三、Linux命令补充

3.1 Linux查看端口占用情况

在Linux中,有几种方式可以查看端口占用情况(已知端口,找进程)

1)netstat命令

  • 使用netstat -tulnp命令可以查看所有正在监听的TCP和UDP端口及其占用情况。
  • 如果需要查看特定端口的占用情况,可以结合使用grep命令,如netstat -tulnp | grep <端口号>

2)ss命令

  • ss命令是另一个用于显示套接字统计信息的工具,与netstat类似。
  • 使用ss -tuln可以查看所有正在监听的端口,同样可以使用grep命令筛选特定端口,如ss -tuln | grep <端口号>

3)lsof命令

  • lsof(List Open Files)命令不仅可以列出当前系统打开的文件,还可以用来查看端口占用情况。
  • 使用lsof -i :<端口号>可以查看特定端口的占用情况。

在这里插入图片描述

Linux查看一个进程/服务 占用的端口(已知进程/服务,找端口)

ps -ef | grep 服务名/进程      
ps -aux | grep 服务名/进程     
netstat -anp | grep 进程号    #查看进程所占用的端口号(windows用findstr代替grep
netstat -pt                  #显示pid和进程

在这里插入图片描述

在这里插入图片描述

查看Linux服务是否开启

ps -ef | grep 服务名  或  ps -aux | grep 服务名     #查看进程状态   
lsof -i:端口号    #看端口.前提是要知道服务的端口号是多少,常用端口号 nginx 80,FTP 21,SSH 22,Telnet 23,HTTP 80,HTTPS 443,Tomcat 8080,Oracle 1521,MySQL 3306,SQLServer 1433,Redis 6379  
netstat -anp | grep 端口号   #查看监听端口(若存在该端口的监听,证明服务正在运行。该方法只适用于部分服务,且只能判断服务是否正在监听指定的端口,无法判断服务是否运行正常)
systemctl status 服务名  或  service 服务名 status     #看状态Active,显示active(running)就表示服务起来了#直接访问,nginx服务起来之后可直接在网页上输入ip去访问,能访问表示服务起来;若不能访问也不一定是服务没起来,可能是防火墙没关、selinux没关等#看日志  less /var/log/messages,shift+g跳到底部 看到Started nginx 表示nginx已起

在这里插入图片描述

Linux关闭线程

kill -pid   (先通过ps -ef命令确定要杀死进程的pid,再kill -pid)
kill -l pid   -l选项告诉kill命令用启动进程的用户已注销的方式结束线程
kill -9 pid  迫使进程在运行时突然终止,一般不推荐使用

3.2 netstat命令详解

在linux使用过程中,有时候需要了解当前系统开放了哪些端口,并且还需要查看开放这些端口的具体进程和用户,可以使用netstat命令。

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。查看网络连接、路由表、接口状态及端口

netstat -tunlp                      #查看已经启动的服务
netstat -tunlp | grep 3306/端口号    #查看指定端口的占用情况
lsof -i:3306                        #查看特定端口的占用情况

在这里插入图片描述

netstat命令 参数说明

[root@localhost ~]# netstat --help
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}netstat [-vWnNcaeol] [<Socket> ...]netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]-r, --route              display routing table。显示Routing Table-I, --interfaces=<Iface> display interface table for <Iface>-i, --interfaces         display interface table。显示网络界面信息表单-g, --groups             display multicast group memberships。显示多重广播功能群组组员名单-s, --statistics         display networking statistics (like SNMP)。显示网络工作信息统计表-M, --masquerade         display masqueraded connections。显示伪装的网络连线-v, --verbose            be verbose。显示指令执行过程-W, --wide               don't truncate IP addresses-n, --numeric            don't resolve names。直接使用ip地址,而不通过域名服务器--numeric-hosts          don't resolve host names--numeric-ports          don't resolve port names--numeric-users          don't resolve user names-N, --symbolic           resolve hardware names。显示网络硬件外围设备的符号连接名称-e, --extend             display other/more information。显示网络其他相关信息-p, --programs           display PID/Program name for sockets。显示正在使用Socket的程序识别码和程序名称-o, --timers             display timers。显示计时器-c, --continuous         continuous listing。持续列出网络状态-l, --listening          display listening server sockets。显示在Listen(监听)中的服务器Socket-a, --all                display all sockets (default: connected)。显示所有连线中的Socket-F, --fib                display Forwarding Information Base (default)。显示FIB-C, --cache              display routing cache instead of FIB。显示路由器配置的快取信息-Z, --context            display SELinux security context for sockets<Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}{-x|--unix} --ax25 --ipx --netrom-t或--tcp:显示TCP传输协议的连线状况-u或--udp:显示UDP传输协议的连线状况<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inetList of possible address families (which support routing):inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25) 

netstat常见命令

netstat -a                   #列出所有端口
netstat -at                  #列出所有 tcp 端口
netstat -au                  #列出所有 udp 端口
netstat -l                   #只显示监听端口
netstat -lt                  #只列出所有监听 tcp 端口
netstat -lu                  #只列出所有监听 udp 端口
netstat -lx                  #列出所有监听 UNIX 端口
netstat -s                   #显示所有端口的统计信息
netstat -p                   #输出中显示 PID 和进程名称
netstat -n                   #netstat输出中不显示主机、端口和用户名 (host, port or user)。即不用别名显示、只用数字显示
netstat -ant | wc -l         #统计tcp数量监听的数量netstat -anp | grep 应用      #显示所有的网络连接(包括监听和非监听套接字)和端口信息,并通过grep命令来过滤输出结果
netstat -anp | grep :6379    #查看所有监听在端口80上的进程
netstat -anp | grep redis    #查看redis进程是否启动

在这里插入图片描述

标记所在情况:

  • 一个叫”redis-server“的进程,正在监听 0.0.0.0:6379 / 0.0.0.0:* 端口等等,”LISTEN“表示监听;2154 为PID、即进程id,redis-server 为服务/应用名称。
  • 一个叫“redis-server”的进程,外部有个“39406”端口,连接了它的“6379”端口,“ESTABLISHED”表示已连接。
netstat -anp命令简单说明:
-a,显示所有
-n,不用别名显示,只用数字显示
-p,显示进程号和进程名

3.3 ps命令

Linux中的ps命令,其缩写为 Process Status,其作用为 查看系统进程,比如正在运行的进程有哪些,什么时候开始运行的,哪个用户运行的,占用了多少资源。

参数:

  • -e 显示所有进程

  • -f 显示所有字段(UID,PPIP,C,STIME字段)

  • -a 显示一个终端的所有进程

  • -u 显示当前用户进程和内存使用情况

  • -x 显示没有控制终端的进程

  • –sort 按照列名排序

ps命令列出的是当前进程的快照,即执行ps命令时刻的进程情况;如果想要动态地显示进程信息,可使用top命令。

Linux进程状态

在Linux系统上,进程有5种状态:

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

3.3.1 常用命令

ps -ef                #查看所有进程
ps -aux               #查看所有进程,包含其他使用者
ps -ef | grep tomcat  #查看指定进程(grep过滤)

ps -ef 命令

在这里插入图片描述

#字段解释
UID:用户ID,即进程的拥有者
PID:进程ID
PPID:父进程ID
C:进程占用的CPU百分比
STIME:进程开始启动时间
TTY:登入者的终端机位置
TIME:进程使用的CPU(运算)时间
CMD:调用进程的命令

ps -aux 命令

在这里插入图片描述

#字段解释
USER:创建进程的用户
PID:进程ID
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用虚拟内存的大小(单位KB)
RSS:进程占用实际物理内存的大小(单位KB)
TTY:进程在哪个终端运行。
STAT:进程状态
START:进程开始启动的时间
TIME:进程使用的CPU(运算)时间
COMMAND:调用进程的命令

在这里插入图片描述

在这里插入图片描述

3.3.2 拓展命令

  • 查看CPU/内存占用率最高的进程

查看进程的时候,让进程按照CPU使用率排序,然后展示前10行,就能清晰地看到哪些进程占用的资源比较多。

ps -aux --sort=-pcpu | head -11
ps -aux --sort=-pmem | head -11

head -11 是因为标题也算一行

+-号可以调整排序,-pcpu 表示降序,+pcpu 表示升序

-pcpu 换成 -pmem,就能查看内存使用最多的10个进程

如果不限制行数,也可以使用 sort 按照指定的列排序。

ps -aux | sort -nk 4 -r     #降序
ps -aux | sort -nk 4        #升序

在这里插入图片描述

  • 查看指定用户的进程

查看某个用户开启了哪些进程,可以使用 -u 参数指定用户名,比如,查看root用户的进程有哪些:

ps -u root -ef

在这里插入图片描述

  • 分页查看进程

除了 grep 外,还可以配合 more 分页查看进程:ps -ef | more

在这里插入图片描述

翻页的操作同 more 命令,q键退出,空格键翻页

3.3.3 字段补充

1)TTY字段(终端类型)
TTY字段表示运行进程的终端是哪个,这里的终端类型有两种:tty和pts。

  • tty:表示物理终端,其中tty1~6是本地字符界面终端,tty7是本地图形终端
  • pts:表示虚拟终端,通常指远程连接的终端,范围是pts/0~255,比如第一个远程连接的终端是pts/0,第二个远程连接的终端是pts/1,依次类推。

2)STAT字段(进程状态)

STAT字段表示进程的状态,常见的状态有以下几种:

  • D:睡眠状态(不可被唤醒),常用于I/O情况。
  • R:进程正在运行
  • S:睡眠状态(可被唤醒)
  • T:停止状态
  • W:内存交互状态
  • Z:僵尸进程(不存在但暂时无法消除)
  • <:高优先级
  • N:低优先级
  • L:被锁入内存
  • s:包含子进程
  • l:多线程
  • +:位于后台

3)僵尸进程

进程由于非正常停止或程序编写错误,导致子进程比父进程先结束,而父进程又没有正常回收子进程,使子进程一直在内存中,导致资源浪费。这种情况就是僵尸进程。

PS:正常情况下应该是父进程先结束,然后子进程由init接管,init 结束子进程并回收对应的资源。

参考 Linux ps命令详解,Linux查看进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/369467.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab进阶绘图第62期—滑珠气泡图

在之前的文章中分享了滑珠散点图的绘制方法&#xff1a; 在此基础上&#xff0c;添加尺寸参数&#xff0c;通过散点的大小表示一个额外的特征&#xff0c;便是滑珠气泡图。 由于Matlab中没有现成的函数绘制滑珠气泡图&#xff0c;因此需要大家自行解决。 本文利用自己制作的B…

【重磅】万能模型-直接能换迪丽热巴的模型

万能模型&#xff0c;顾名思义&#xff0c;不用重新训练src&#xff0c;直接可以用的模型&#xff0c;适应大部分原视频脸 模型用法和正常模型一样&#xff0c;但可以跳过训练阶段&#xff01;直接到合成阶段使用该模型 本模型没有做Xseg&#xff0c;对遮挡过多的画面不会自动适…

centos7固定ip

1.查看虚拟网络配置 NAT设置&#xff1a; 2.修改网卡配置文件 [rootlocalhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" BOOTPROTO"static" DEFROUTE"yes"…

springboot dynamic配置多数据源

pom.xml引入jar包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version> </dependency> application配置文件配置如下 需要主要必须配置…

【鸿蒙学习笔记】页面和自定义组件生命周期

官方文档&#xff1a;页面和自定义组件生命周期 目录标题 [Q&A] 都谁有生命周期&#xff1f; [Q&A] 什么是组件生命周期&#xff1f; [Q&A] 什么是组件&#xff1f;组件生命周期 [Q&A] 什么是页面生命周期&#xff1f; [Q&A] 什么是页面&#xff1f;页面生…

day04-numpy操作文件

操作文件 使用loadtxt读取文本、csv文件 loadtxt(fname, dtype<type float>, comments#, delimiterNone, convertersNone, skiprows0, usecolsNone, unpackFalse, ndmin0,encodingbytes)参数&#xff1a; fname&#xff1a;指定文件名称或字符串。支持压缩文件&#x…

zigbee笔记:六、看门狗定时器(Watch Dog)

一、看门狗基础 1、看门狗功能&#xff1a; 由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造成各种寄存器和内存的数据混乱&#xff0c;会导致程序指针错误等&#xff0c;程序运行可能会陷入死循环。程序的正常运行被打断&#xff0c;由单片机控制的系统无法继…

maven设置阿里云镜像源(加速)

一、settings.xml介绍 settings.xml是maven的全局配置文件&#xff0c;maven的配置文件存在三个地方 项目中的pom.xml&#xff0c;这个是pom.xml所在项目的局部配置文件用户配置&#xff1a;${user.home}/.m2/settings.xml全局配置&#xff1a;${M2_HOME}/conf/settings.xml 优…

QT实现GIF动图显示(小白版,可直接copy使用)

需要你自己提前设置好动图的位置&#xff0c;本例中存放于"/Users/PLA/PLA/PLA.gif widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMovie> #include <QLabel>class Widget : public QWidget {Q_OBJECTpublic:explicit Wid…

六西格玛项目实战:数据驱动,手机PCM率直线下降

在当前智能手机市场日益竞争激烈的背景下&#xff0c;消费者对手机质量的要求达到了前所未有的高度。PCM&#xff08;可能指生产过程中的某种不良率或缺陷率&#xff09;作为影响手机质量的关键因素&#xff0c;直接关联到消费者满意度和品牌形象。为了应对这一挑战&#xff0c…

系统工程与信息系统基础(下)

目录 政府信息化和电子政务 企业信息化和电子商务 基本的逻辑和流程 信息化的概念 信息化的目的和涉及得三类创新 信息化需求的三个层次 企业信息化的方法 信息系统战略规划——方法 BI&#xff08;商业智能&#xff09; 数据挖掘 数据湖 BPR&#xff08;业务流程重…

物联网工业级网关解决方案 工业4G路由器助力智慧生活

随着科技的飞速发展&#xff0c;无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代&#xff0c;一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能&#xff0c;助力我们步入智慧新纪元。 一、快速转化&…

TikTok马来西亚直播网络怎么配置?

TikTok是一款全球流行的社交媒体应用&#xff0c;在东南亚地区拥有大量用户。在马来西亚这个多元化的国家&#xff0c;配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖&#xff1a;马来西亚包括大片陆地和众多岛屿&#xff0c;网…

CenterOS7安装java

CenterOS7安装java #进入安装目录 cd /usr/local/soft/java#wget下载java8 #直接进入官网选择相应的版本进行下载&#xff0c;然后把下载链接复制下来就可以下载了 #不时间的下载链接不一样 wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c9…

Vue报错:Module not found: Error: Can‘t resolve ‘less-loader‘ in ‘文件地址‘

原因&#xff1a;Webpack无法找到 less-loader 模块&#xff0c;但在<style langless></style>中进行使用。less-loader 是一个Webpack的加载器&#xff0c;它用于将less文件编译成CSS。如果Webpack无法解析这个加载器&#xff0c;它就无法处理less文件&#xff0c…

ELK日志实时监控

目录 一、ELK/EFK简介 1.1 什么是ELK/EFK? 1.2 常见架构 1、Elasticsearch Logstash Kibana 2、Elasticsearch Logstash Filebeat Kibana 3、Elasticsearch Logstash Filebeat Kibana Redis 4、Elasticsearch Fluentd Filebeat Kibana 1.3 基本流程 二、…

PEFT - 安装及简单使用

LLM、AIGC、RAG 开发交流裙&#xff1a;377891973 文章目录 一、关于 PEFT二、安装1、使用 PyPI 安装2、使用源码安装 三、快速开始1、训练2、保存模型3、推理4、后续步骤 本文翻译整理自&#xff1a;https://huggingface.co/docs/peft/index 一、关于 PEFT &#x1f917;PEFT…

论文导读 | 综述:大模型与推荐系统

最近&#xff0c;预训练语言模型&#xff08;PLM&#xff09;在自然语言处理领域取得了巨大成功&#xff0c;并逐渐引入推荐系统领域。本篇推文介绍了最近的两篇预训练语言模型和推荐系统结合的综述&#xff1a; [1] Pre-train, Prompt, and Recommendation: A Comprehensive …

鼠标自动点击器怎么用?鼠标连点器入门教程!

鼠标自动点击器是适用于Windows电脑的自动执行鼠标点击操作的工具&#xff0c;主要用于模拟鼠标点击操作&#xff0c;实现鼠标高速点击的操作。通过模拟鼠标点击&#xff0c;可以在用户设定的位置、频率和次数下自动执行点击动作。 鼠标自动点击器主要的应用场景&#xff1a; …

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…