linux查看使用端口号

该博客主要围绕Linux系统展开,核心内容是如何查看使用的端口号,这属于信息技术中操作系统相关的知识,对系统管理和网络配置等方面有重要意义。

lsof -i:9507

<think>嗯,用户的问题非常明确:在Linux系统下查看端口号的方法。从用户提供的四条引用来看,信息确实有些杂乱,需要整合提炼核心方法。用户可能是个刚接触Linux的系统管理员或开发者,面对服务器端口排查需求,需要快速准确的解决方案。 注意到引用[1]和[3]都提到端口号是网络通信的标识,引用[2]和[4]则给出具体命令。用户特别强调"查看端口号",实际隐含两层需求:一是查看本机开放的端口(服务端视角),二是查看端口占用进程(故障排查视角)。上次回答的历史记录里有提到ss和lsof工具,这次应该延续这个技术路线。 最关键的四个命令需要重点说明:netstat作为传统工具虽然过时但普及率高;ss是性能更好的替代方案;lsof擅长定位进程与文件的关联;nmap则用于扫描远程主机。防火墙状态检查容易被新手忽略,引用[2]提到的firewall-cmd和日志排查要补充。用户引用[4]要求安装nmap的步骤值得收录,但需区分apt/yum包管理器。 关于命令输出解析,用户引用[3]提到"COMMAND栏"这类细节,说明用户可能需要理解各列含义。考虑在示例中添加#注释行,比如在lsof输出中用箭头标注PID和COMMAND列。对于查看防火墙状态的方法,引用[2]的grep日志法虽然专业但门槛较高,还是把firewall-cmd放在前面更实用。 最后考虑补充两个易错点:一是普通用户执行netstat/ss可能看不到所有进程,需要sudo;二是LISTEN状态与ESTABLISHED状态的区别。用户引用的文献里有条厦门培训网的转载内容质量较低,信息过时,决定不采用。 </think>好的,根据您在Linux系统下查看端口号的需求,结合可靠的系统管理实践,以下是几种最常用和有效的方法: ### 🔍 方法一:使用 `ss` 命令(推荐 - 更现代,更快) `ss` (socket statistics) 是 `netstat` 的现代替代品,显示信息更详细,速度更快。 1. **查看所有监听端口 (TCP & UDP):** ```bash sudo ss -tuln ``` * `-t`:显示 TCP 端口。 * `-u`:显示 UDP 端口。 * `-l`:仅显示监听 (LISTEN) 状态的套接字。 * `-n`:以数字形式显示地址和端口号(不尝试解析主机名或服务名)。 * **输出关键列:** * `Netid`:协议 (tcp, udp)。 * `State`:状态 (LISTEN)。 * `Local Address:Port`:本地监听的 IP 地址和端口号。 * `Peer Address:Port`:对端地址和端口(监听时通常为 *:*)。 * `Process`:占用该端口的进程名称和 PID (如果有权限且使用 `-p` 参数)。 2. **查看特定端口 (如 80) 是否被监听:** ```bash sudo ss -tln sport = :80 ``` * `sport = :80`:筛选源端口 (sport) 为 80 的条目。对于监听端口,源端口就是监听的端口。 3. **查看端口占用进程信息 (需 `-p` 选项):** ```bash sudo ss -tulnp ``` * `-p`:显示使用该套接字的进程名称和 PID。**通常需要 `sudo` 权限才能看到所有进程信息。** ### 📡 方法二:使用 `netstat` 命令(传统方法,仍广泛使用) `netstat` 是一个经典的网络工具,功能与 `ss` 类似,但可能稍慢一些。语法也类似。 1. **查看所有监听端口 (TCP & UDP):** ```bash sudo netstat -tuln ``` * 参数含义与 `ss` 的 `-tuln` 相同。 2. **查看端口占用进程信息:** ```bash sudo netstat -tulnp ``` * `-p`:显示 PID 和程序名称。同样需要 `sudo`。 ### 🔎 方法三:使用 `lsof` 命令(基于文件/进程视角) `lsof` (list open files) 列出当前系统打开的文件,在网络上下文中,端口也视为文件。 1. **查看所有网络连接和监听端口:** ```bash sudo lsof -i ``` 2. **仅查看监听端口:** ```bash sudo lsof -i -sTCP:LISTEN ``` 3. **查看特定端口 (如 22) 的使用情况:** ```bash sudo lsof -i :22 ``` * **输出关键列:** * `COMMAND`:进程名称。 * `PID`:进程 ID。 * `USER`:运行进程的用户。 * `FD`:文件描述符 (如 `cwd`, `mem`, `3u` IPv4, `4u` IPv6)。 * `TYPE`:类型 (如 IPv4, IPv6)。 * `DEVICE`:设备号。 * `SIZE/OFF`:大小/偏移量。 * `NODE`:Inode 号。 * `NAME`:**监听地址和端口 (如 `*:ssh (LISTEN)`) 或连接的对端地址和端口。** ### 🌐 方法四:使用 `nmap` 扫描本地主机(检查防火墙后实际开放的端口) 前述方法 (`ss`, `netstat`, `lsof`) 都是从系统内部查看哪些端口*声明*在监听。`nmap` 扫描则是从网络角度探测本地主机上*实际开放并可访问*的端口,这考虑了防火墙规则的影响[^2]。 1. **安装 nmap (如果系统未自带):** ```bash # Debian/Ubuntu 系 sudo apt-get install nmap # RHEL/CentOS 系 sudo yum install nmap # Fedora sudo dnf install nmap ``` 2. **扫描本地主机开放端口:** ```bash sudo nmap -sS -p- 127.0.0.1 ``` * `-sS`:TCP SYN 扫描(最常用、快速的扫描类型)。 * `-p-`:扫描所有 1-65535 端口(范围大,耗时较长)。可以用 `-p 1-1000` 指定范围。 * `127.0.0.1`:扫描目标为本机。也可以换成服务器的实际 IP 地址。 * **输出概要:** 列出探测到的开放端口及其对应的服务名(基于端口号的猜测)。精确的服务识别可能需要更复杂的扫描选项。 ### 🔥 补充:检查防火墙状态(影响端口外部可访问性) 端口在系统内部监听并不意味着外部可以访问,防火墙可能阻止了连接[^2]。了解防火墙规则很重要: 1. **检查 `firewalld` (CentOS/RHEL/Fedora):** ```bash sudo firewall-cmd --list-all ``` * 查看 `ports:` 部分列出的开放端口。 2. **检查 `ufw` (Ubuntu/Debian):** ```bash sudo ufw status verbose ``` * 查看 `Status: active` 和 `To Action From` 规则列表中的端口。 3. **检查 `iptables` (传统防火墙):** ```bash sudo iptables -L -n -v sudo iptables -t nat -L -n -v # 如需查看 NAT 规则 ``` * 规则较多,需仔细查看 `ACCEPT` 规则对应的端口。 📌 **总结建议:** 1. **快速查看所有监听端口及进程:** 首选 `sudo ss -tulnp`。 2. **查找特定端口被哪个进程使用:** `sudo ss -tln sport = :端口号` 或 `sudo lsof -i :端口号`。 3. **验证端口是否*实际*能被外部访问:** 使用 `sudo nmap -sS -p 端口号 目标IP`。 4. **确认防火墙是否放行端口:** 使用相应的防火墙管理命令 (`firewall-cmd`, `ufw`, `iptables`)。 --- ### 📌 相关问题 1. `ss`、`netstat` 和 `lsof` 命令在查看端口信息时的主要区别是什么?哪种情况下应该优先使用哪个?[^1][^3][^4] 2. 使用 `nmap` 扫描 `127.0.0.1` 和扫描服务器的公网 IP 地址,结果可能有什么不同?为什么?[^2][^4] 3. 在 `ss -tulnp` 的输出中,看到某个端口处于 `LISTEN` 状态,但外部无法连接,最可能的原因是什么?如何一步步排查?[^2][^4] 4. 如何查看一个特定进程 (已知 PID 或名称) 打开了哪些网络端口?[^3][^4] 5. 除了上述命令,Linux 系统 `/proc` 文件系统中哪些文件或目录可以直接或间接查看端口信息?[^1][^3] [^1]: Linux怎么查看端口号?  在Linux系统中,端口号是用来标识不同网络应用程序的逻辑通道... [^2]: Linux网络命令:如何查看linux系统防火墙开放的...多种方法来查看系统开放的网络端口号... [^3]: linux查看端口号,端口如何查看linux端口号... [^4]: 【LinuxLinux 系统上查看端口使用情况的常用方法...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值