linux 端口查询命令

文章介绍了Linux系统中用于查询端口占用情况的lsof和netstat命令。lsof可以列出所有进程的打开文件,包括网络连接,通过指定参数可以过滤出特定端口或协议的信息。netstat则用于查看网络状态,包括连接、路由等信息。telnet命令可用于远程主机端口开放情况的初步检查。文章提供了这些命令的基本用法和组合参数的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任何知识都是用进废退,有段时间没摸linux,这大脑里的知识点仿佛全部消失了,就无语。 索性,再写一篇记录,加强一下记忆,下次需要就看自己的资料好了。

lsof命令

Linux端口查询命令可以通过lsof实现:

  1. lsof : List Open Files的缩写,可列出各种进程打开的文件信息,如下图所示:

直接使用lsof 命令得出的是当前所有的信息,会有很多,因此一般可以通过结合参数来获取更加精确的信息,命令的具体参数,我们可以通过 --help 命令来查询:

[root@localhost 桌面]# lsof --help
lsof: illegal option character: -
lsof: -e not followed by a file system path: "lp"
lsof 4.91
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-E] [+|-e s] [+|-f[gG]]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
 [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
  -?|-h list help          -a AND selections (OR)     -b avoid kernel blocks
  -c c  cmd c ^c /c/[bix]  +c w  COMMAND width (9)    +d s  dir s files
  -d s  select by FD set   +D D  dir D tree *SLOW?*   +|-e s  exempt s *RISKY*
  -i select IPv[46] files  -K [i] list|(i)gn tasKs    -l list UID numbers
  -n no host names         -N select NFS files        -o list file offset
  -O no overhead *RISKY*   -P no port names           -R list paRent PID
  -s list file size        -t terse listing           -T disable TCP/TPI info
  -U select Unix socket    -v list version info       -V verbose search
  +|-w  Warnings (+)       -X skip TCP&UDP* files     -Z Z  context [Z]
  -- end option scan     
  -E display endpoint info              +E display endpoint info and files
  +f|-f  +filesystem or -file names     +|-f[gG] flaGs 
  -F [f] select fields; -F? for help  
  +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)
                                        +m [m] use|create mount supplement
  +|-M   portMap registration (-)       -o o   o 0t offset digits (8)
  -p s   exclude(^)|select PIDs         -S [t] t second stat timeout (15)
  -T qs TCP/TPI Q,St (s) info
  -g [s] exclude(^)|select and print process group IDs
  -i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]
  +|-r [t[m<fmt>]] repeat every t seconds (15);  + until no files, - forever.
       An optional suffix to t is m<fmt>; m must separate t from <fmt> and
      <fmt> is an strftime(3) format for the marker line.
  -s p:s  exclude(^)|select protocol (p = TCP|UDP) states by name(s).
  -u s   exclude(^)|select login|UID set s
  -x [fl] cross over +d|+D File systems or symbolic Links
  names  select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.
[root@localhost 桌面]# 

常用的结合命令使用的参数有:

  1. 查看某个端口的对应进程: lsof -i:port:

  1. 查看某个协议的某个端口情况:lsof -i 协议:port:

netstat 命令

netstat 命令,查看网络状态情况:

netstat --help :

  1. 查看端口的网络状态情况以及进程信息:netstat -a |grep port

-a;显示所有的连接的socket ; grep 在返回的信息中查找后面的内容

一般通过这个命令就可以查询到之后关键字的进程,但是不知道端口的监听情况

telnet命令

除去以上方法可以确认某端口的情况,还可以通过telnet命令去确认某个远程主机上的端口开放情况:

telnet ip port:

上图的情况,只能确认不能连接,但是不能确认:到底是主机就已经连不上,还是只是端口没开放访问,结合ping命令即可确认:

能ping通,不能连上端口,就看看端口对应进程启动没有,端口号开放没有即可。 端口号开放可参考另一篇:https://blog.csdn.net/yeyuningzi/article/details/127546854

<think>我们正在讨论Linux查看端口占用的命令。根据引用内容,最常用的命令是netstat,结合不同的参数可以查看端口占用情况。用户的问题很直接:想知道Linux查看端口占用的命令。我们需要给出清晰、分步骤的回答,并确保命令的正确性。根据引用[1]和引用[2]:1.使用netstat命令,配合参数:-t(TCP)、-u(UDP)、-l(监听)、-n(数字格式显示端口号)、-a(所有连接)等。2.结合grep命令可以过滤特定端口。引用[3]给出了具体的例子:-netstat-tunlp:查看所有TCP和UDP的监听端口(常用)-结合grep过滤:netstat-tunlp|grep端口号此外,引用[1]还提到了psmisc命令(实际上应该是使用fuser或lsof),但用户问题主要围绕netstat,所以我们以netstat为主。因此,回答结构如下:1.介绍常用的netstat命令。2.给出具体命令格式和参数解释。3.提供几个示例。4.补充其他可能用到的命令(如lsof)作为备选。注意:引用中提到的命令参数略有不同,比如引用[3]中使用了-ntulp,而引用[2]中使用了-tuln。实际上,参数顺序不影响,效果相同。另外,注意引用[1]中有一个命令示例:netstat-AaLlnW|grep3306,这是MacOS下的命令(因为参数-AaLlnW是Mac的netstat特有),而Linux下通常使用-tunlp。所以我们要注意区分,用户问的是Linux,所以使用Linux的常用参数。因此,在回答中,我们以Linux下通用的参数为准。最后,按照用户要求,生成相关问题。</think>在 Linux 系统中,查看端口占用情况的常用命令是 `netstat` 和 `lsof`,以下是详细使用方法: ### 📌 一、使用 netstat 命令 这是最常用的工具,需配合参数和 `grep` 过滤: ```bash # 查看所有端口占用情况 netstat -tunlp # 查看指定端口(如 3306)的占用 netstat -tunlp | grep 3306 ``` **参数说明**: - `-t`:显示 TCP 端口 - `-u`:显示 UDP 端口 - `-n`:以数字形式显示端口(不解析服务名) - `-l`:仅显示监听中的端口 - `-p`:显示进程 ID 和程序名(需 sudo 权限) ### 📌 二、使用 lsof 命令 更专业的工具,直接定位端口关联进程: ```bash # 查看指定端口(如 80)占用 lsof -i :80 ``` **参数说明**: - `-i :端口号`:指定要查询端口 - 输出包含:进程名、PID、用户、文件描述符等 ### 📌 三、实用示例 1. **检查 8080 端口占用**: ```bash netstat -tunlp | grep 8080 # 或 lsof -i :8080 ``` 2. **查看 MySQL 默认端口状态**: ```bash netstat -tunlp | grep 3306 ``` 3. **找出占用端口的进程并终止**: ```bash sudo lsof -i :5000 # 获取 PID sudo kill -9 <PID> # 强制结束进程 ``` ### ⚠️ 注意: - 部分命令需要 `sudo` 权限才能查看完整进程信息 - 如果未安装工具,使用包管理器安装: ```bash sudo apt install net-tools lsof # Debian/Ubuntu sudo yum install net-tools lsof # CentOS/RHEL ``` --- ### ❓ 相关问题 1. 如何查看某个进程(如 Nginx)正在使用的端口? 2. `netstat` 和 `lsof` 命令输出中的 `LISTEN` 和 `ESTABLISHED` 状态有什么区别? 3. 如何实时监控 Linux 系统的端口连接变化?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值