linux中查看端口状态以及是否被占用的相关操作指令(netstat、isof)

article/2025/9/11 12:14:08

linux中查看端口状态

  • linux中查看端口状态
    • 1、netstat
      • 1.1、查看服务器上服务和端口
      • 1.2、查看某个端口是否被占用
    • 2、lsof:进程打开文件的相关信息
      • 2.1、列出80端口目前打开的文件列表
      • 2.2、列出所有的网络连接
      • 2.3、查看进程打开了某个文件
      • 2.4、查看某个用户打开的所有文件
  • 参考

linux中查看端口状态

端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口。软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序。大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字。

套接字是和 IP 地址、软件端口和协议结合起来使用的,而端口号对传输控制协议(TCP)和用户数据报协议(UDP)协议都适用,TCP 和 UDP 都可以使用 0 到 65535 之间的端口号进行通信。

以下是端口分配类别:

  • 0 - 1023: 常用端口和系统端口
  • 1024 - 49151: 软件的注册端口
  • 49152 - 65535: 动态端口或私有端口

注意:

端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。

1、netstat

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
默认情况下,netstat 会列出打开的套接字。如果不指定任何地址族,则会显示所有已配置地址族的活动套接字。

使用方式

netstat [选项] [参数]

命令参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

查看端口使用状态最常用指令

netstat  -anp  |grep   端口号

查看某一端口的连接数量,比如3306端口

netstat -pnt |grep :3306 |wc

1.1、查看服务器上服务和端口

netstat -nultp

该命令是查看当前所有已经使用的端口情况

在这里插入图片描述
netstat -anp | grep 82

查看82端口的使用情况
在这里插入图片描述
可以看出并没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了

1.2、查看某个端口是否被占用

=netstat -anp | grep 3306
在这里插入图片描述
主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了。

2、lsof:进程打开文件的相关信息

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。

使用格式

lsof [options] filename

参数说明

-a 指示其它选项之间为与的关系
-c <进程名> 输出指定进程所打开的文件
-d <文件描述符> 列出占用该文件号的进程
+d <目录>  输出目录及目录下被打开的文件和目录(不递归)
+D <目录>  递归输出及目录下被打开的文件和目录
-i <条件>  输出符合条件与网络相关的文件
-n 不解析主机名
-p <进程号> 输出指定 PID 的进程所打开的文件,不解析端口号
-t 只输出 PID
-u 输出指定用户打开的文件
-U 输出打开的 UNIX domain socket 文件
-h 显示帮助信息
-v 显示版本信息

lsof可以查看打开的文件是:

普通文件
目录
网络文件系统的文件
字符或设备文件
(函数)共享库
管道、命名管道
符号链接
网络文件(例如:NFS file、网络socket,unix域名socket)
还有其它类型的文件,等等

输入:lsof

COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR              253,1       4096          2 /
systemd       1          root  rtd       DIR              253,1       4096          2 /
systemd       1          root  txt       REG              253,1    1523568    1053845 /usr/lib/systemd/systemd
systemd       1          root  mem       REG              253,1      20040    1050452 /usr/lib64/libuuid.so.1.3.0
systemd       1          root  mem       REG              253,1     261336    1051899 /usr/lib64/libblkid.so.1.1.0
systemd       1          root  mem       REG              253,1      90664    1050435 /usr/lib64/libz.so.1.2.7
systemd       1          root  mem       REG              253,1     157424    1050447 /usr/lib64/liblzma.so.5.2.2
systemd       1          root  mem       REG              253,1      23968    1050682 /usr/lib64/libcap-ng.so.0.0.0
systemd       1          root  mem       REG              253,1      19888    1050666 /usr/lib64/libattr.so.1.1.0COMMAND:进程的名称
PID:进程标识符
TID:线程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件,一般有以下取值: cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,表示程序的可执行文件mem:表示内存映射文件0:表示标准输出1:表示标准输入2:表示标准错误u 表示该文件被打开并处于读取/写入模式。r 表示只读模式,w 表示只写模式
TYPE:文件类型,常见的文件类型有以下几种: DIR:表示目录CHR:表示字符类型BLK:块设备类型UNIX:UNIX域套接字FIFO:先进先出(FIFO)队列IPv4:网际协议(IP)套接字
DEVICE:指定磁盘的名称
SIZE/OFF:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

在这里插入图片描述

2.1、列出80端口目前打开的文件列表

命令:lsof -i :80

COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE  NAME
nginx      8838  root    8u  IPv4 114512623      0t0  TCP  *:http (LISTEN)
nginx     12886 jelly    8u  IPv4 114512623      0t0  TCP  *:http (LISTEN)
nginx     12887 jelly    8u  IPv4 114512623      0t0  TCP  *:http (LISTEN)

列出指定范围内被打开的 TCP 端口

$ sudo -i TCP:1-1024

在这里插入图片描述

2.2、列出所有的网络连接

命令:lsof -i,选项默认会同时输出 IPv4 和 IPv6 打开的文件:

COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
ntpd        856   ntp   16u  IPv4     13105      0t0  UDP *:ntp 
ntpd        856   ntp   17u  IPv6     13106      0t0  UDP *:ntp 
ntpd        856   ntp   18u  IPv4     13210      0t0  UDP localhost:ntp 
ntpd        856   ntp   19u  IPv4     13211      0t0  UDP jellythink:ntp 
vsftpd     1613  root    3u  IPv6     17867      0t0  TCP *:ftp (LISTEN)
php-fpm    4037 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
sshd       8503  root    3u  IPv4    197060      0t0  TCP *:50022 (LISTEN)
nginx      8838  root    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
nginx      8838  root    9u  IPv4 114512624      0t0  TCP *:https (LISTEN)
php-fpm    9059 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
php-fpm    9137 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
命令:lsof -i tcp
说明:列出所有的TCP网络连接信息命令:lsof -i udp
说明:列出所有的UDP网络连接信息命令:lsof -i tcp:80
说明:列出80端口TCP协议的所有连接信息命令:lsof -i udp:25
说明:列出25端口UDP协议的所有连接信息

2.3、查看进程打开了某个文件

$ sudo lsof /bin/bash
直接指定文件的名称作为 lsof 的参加就可以查看哪些进程打开了这个文件,下面的命令查询打开了 /bin/bash 文件的进程:

在这里插入图片描述
查看哪些进程打开了某个目录及目录下的文件

1、这里分两种情况,+d 选项不执行递归查询,只查找那些打开了指定目录以及指定目录下文件和目录的进程,比如:

$ sudo lsof +d /var/log

在这里插入图片描述
2、而 +D 选项则会对指定的目录进行递归

$ sudo lsof +D /var/log

在这里插入图片描述
查看某个进程打开的所有文件

ps -p PID
通过 -p 选项并指定进程的 PID 可以输出该进程打开的所有文件。

比如我们想要查看 cron 程序打开的文件,可以先用 ps -C cron 命令查出进程的 PID
在这里插入图片描述
然后把该 PID 传递给 lsof 命令的 -p 选项:

$ sudo lsof -p 1152

在这里插入图片描述

查看指定名称的程序打开的文件
通过 -c 选项可以匹配进程运行的程序(可执行文件)名称。比如我们要查找以字母 cr 开头的程序打开的文件列表:

$ sudo lsof -c cr

在这里插入图片描述

2.4、查看某个用户打开的所有文件

-u 选项可以指定用户名或 user ID,并且和 -c 选项一样,可以通过逗号分隔多个用户名称或 user ID

$ sudo lsof -u syslog

在这里插入图片描述

参考

1、https://www.cnblogs.com/hindy/p/7249234.html
2、https://www.jellythink.com/archives/449
3、https://www.cnblogs.com/sparkdev/p/10271351.html


http://chatgpt.dhexx.cn/article/Q8T223wH.shtml

相关文章

绝对优势与比较优势的数学分析与其…

广义动量定理与系统思考 ——战争、管理学与经济学通论 2.4 作用点与经济学 2.4.1 作用点与比较优势 当有n国生产2种产品时&#xff0c;可以写出如下的带约束的函数&#xff0c; 其中Fi1和Fi2分别为i国生产1单位产品1和产品2所需劳动量&#xff0c;xi…

新-新古典综合给出的正统答案-中国视角下的宏观经济

新-新古典综合给出的正统答案-潘登同学的宏观经济学笔记 文章目录 新-新古典综合给出的正统答案-潘登同学的宏观经济学笔记 当前主流宏观经济学(新-新古典综合)的思想源流古典理论凯恩斯理论新古典综合(neoclassical synthesis)新-新古典综合(New-neoclassical synthesis) 宏观…

经济学计算机会成本,经济学思维方式之二——机会成本、经济利润

今天的内容&#xff0c;顺着昨天的成本收益模型&#xff0c;来说一说经济学里两个重要的概念——机会成本和经济利润。 首先&#xff0c;说说我自己跨学科学习的理念。 跨学科学习学什么&#xff1f;学的是匪夷所思的概念和模型&#xff0c;是不通过系统学习&#xff0c;这辈子…

国内首次!3位清华姚班00后学霸斩获计算机理论顶会最佳学生论文奖

作者丨Joey 好困 来源丨新智元 【导读】2022年计算机理论顶会STOC正式开幕&#xff0c;来自清华姚班的三位00后学霸斩获最佳学生论文奖。 近日&#xff0c;理论计算机科学领域顶级国际会议第54届ACM计算理论年会&#xff08;STOC 2022&#xff09;拉开帷幕。 清华姚班的三位00后…

第三天之C++面向对象模型初探(this指针)

前言 C对象模型可以概括为以下2部分&#xff1a; 语言中直接支持面向对象程序设计的部分&#xff0c;主要涉及如构造函数、析构函数、虚函数、继承&#xff08;单继承、多继承、虚继承&#xff09;、多态等等。对于各种支持的底层实现机制。 在c语言中&#xff0c;“数据”和…

一个简单的智能合约模型

我问过的每个人对“智能合约”有着不同的定义。下面是我的智能合约定义。 最近这些天&#xff0c;我听到越来越的人谈论“智能合约”。但是&#xff0c;当你让他们对“智能合约”这一术语下一个定义的时候&#xff0c;他们不能清晰地表达&#xff0c;这一个概念就像从他们手中溜…

HBase数据模型与整体架构

目录 1.HBase的特点 2.HBase数据模型 2.1.HBase逻辑架构 2.2.HBase物理存储 3.HBase整体架构 HBase原理深入: HBase原理深入_李嘉图呀李嘉图的博客-CSDN博客 HBase优化&#xff1a;https://blog.csdn.net/qq_42029989/article/details/126607734 1.HBase的特点 海量存储&…

数据结构与算法--图的深度优先搜索 (DFS)

深度优先搜索即是 从起点出发&#xff0c;从规定的方向中选择一个不断往前走&#xff0c;走到头为止&#xff0c;然后尝试另一种方向直到最后的终点。 DFS解决的是连通性问题&#xff0c;即从A是否能到达B。 采用DFS进行遍历的话&#xff0c;必须依赖栈&#xff0c;后进先出。 …

国际经济学——期末复习

这里写自定义目录标题 李嘉图模型相对价格与供给贸易所得相对工资多种、连续产品的拓展其他概念 专用要素模型孤立经济的情况在国际贸易中贸易模式影响 Heckscher-Ohlin模型要点表述 中略新贸易理论垄断竞争模型(1979)CES效用函数规模报酬递增由于不考所以只写重要结论和推导思…

经济学中的李嘉图模型

前言 因为模型里要用到很多数学推导&#xff0c;所以这篇文章用word写成。然后再截图发上来 原文楼主放在百度网盘里了&#xff0c;链接如下&#xff1a; https://pan.baidu.com/s/14sxnllQ44Wu88moH5_NzTw 定义 一个简单的基础模型 引入技术优势 一个极端的假设 悖论 贸易的…

java中Long型和long型的比较大小

一. Long数据的大小的比较 对于Long类型的数据&#xff0c;这个数据是一个对象&#xff0c;所以对象不可以直接通过“>”,“”&#xff0c;“<”的比较&#xff0c;如果要比较两个对象的是否相等的话&#xff0c;我们可以用Long对象的.equals&#xff08;&#xff09;方…

【Java】Long型与String型互转

String转Long Long.valueOf(str)Long.parseLong(str) Long转String String.valueOf(num)Long.toString(num) import java.util.Arrays; import java.util.List;public class Test {public static void main(String[] args) {String str "100";Long one Long.va…

Long型数据精度丢失问题

数据库中有一个bigint类型数据&#xff0c;对应java后台类型为Long型&#xff0c;在某个查询页面中碰到了问题&#xff1a;页面上显示的数据和数据库中的数据不一致。例如数据库中存储的是&#xff1a;1475797674679549851&#xff0c;显示出来却成了1475797674679550000&#…

vue前端处理后台返回的Long型数据精度丢失

vue前端处理后台返回的Long型数据精度丢失 问题描述 开发时后端返回的id为Long型&#xff0c;结果发现俩id怎么会一样呢&#xff1f;如下图是控制台Preview返回的数据 正以为是后端那边数据有误时&#xff0c;我点开Response发现这边的id是正常的… Preview和Response的数据…

C语言中的long型是究竟占4个字节还是8个字节?

今天在复习C语言的时候踩了一个很有意思的坑。 #include <stdio.h>int main() {printf("long int : %d\n", sizeof(long));return 0; }上面是我在IDE中使用的测试代码&#xff0c;执行它我的第一反应是会得到 4 的长度。 但实际的结果如下图所示&#xff1a;…

c java long_C语言中输出long long型数据怎么输出

展开全部 C语言中输出long long型数据使用%lld格式输出的方法: 1、32313133353236313431303231363533e59b9ee7ad9431333366303761 long long 是C99标准对整型类型做的扩展,每个long long类型的变量占8字节,64位。其表示范围为-9223372036854775808~9223372036854775807。 2、…

解决问题:long型数据精度丢失

在数据库中id设置为bigint且自增在java中对应long型数据 而在前台传输过程中键值过长导致精度丢失 原因是JS内置number类型的安全整数是53位&#xff0c;而Long为8个字节64位&#xff0c;会发生精度丢失 解决办法1&#xff1a; 点击设计表查看选项&#xff0c;发现自动递增数字…

浏览器接收Long型数据精度丢失问题的解决方案

问题描述 当我们后端返回前端Long类型的数据时&#xff0c;后三位会变成0&#xff0c;导致精度丢失。 有意思的地方是&#xff0c;postman测试接口时&#xff0c;查看返回值精度并未丢失&#xff0c;是字符串。 解决方案 在需要保留精度的属性上使用JsonSerialize(using To…

long型长整数字在前端页面显示异常及其解决方法

文章目录 1.引子2.解决问题&#xff08;1&#xff09;初试EL表达式取long型数值&#xff08;2&#xff09;再探EL表达式取字符串格式long型数值&#xff08;3&#xff09;最后一试---给EL表达式加引号 3.总结 1.引子 在做项目中&#xff0c;发现了一个诡异的事情&#xff0c;后…