linux 查看端口被占用情况详解

本文介绍如何使用lsof和netstat等命令检查被占用的端口及其对应的程序,包括如何找出占用特定端口的进程ID,并展示了如何终止这些进程的方法。

经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序

 

1、lsof -i:port

port为端口号

 

[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080

COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME

impalad 11978  mqq  150u  IPv4 549847837      0t0  TCP *:webcache (LISTEN)

 

通过上面命令可以查看到8080端口被impalad这个程序占用,进程ID为:11978

如要杀掉该进程,可以执行:

kill -9 11978将该程序杀掉

 

2、通过netstat 和 ps 两个命令联合起来看占用端口的程序及进程ID

[root@slave /data/spark-1.4.0-bin-cdh4]# netstat -apn|grep 8080  

tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      11978/impalad       

tcp        0      0 192.168.209.16:53501          192.168.209.19:8080           TIME_WAIT   -      

 

可以看到8080已被impalad占用,并且进程ID为:11978,再通过下面命令可以看到该程序的路径

 

[root@slave /data/spark-1.4.0-bin-cdh4]# ps -elf|grep impalad

0 S mqq      11978     1  9  80   0 - 15906542 futex_ Jun25 ?     2-01:23:55 /usr/lib/impala/sbin/impalad -log_dir=/data/log/impala -catalog_service_host=host.impala -state_store_port=24000 -use_statestore -webserver_port=8080 -state_store_host=host.impala -be_port=22000 -default_query_options=DEFAULT_ORDER_BY_LIMIT=1000000

 

0 S root     27963 24729  0  80   0 - 25810 pipe_w 14:37 pts/5    00:00:00 grep impalad

      

 

 

 3、netstat -apn|grep 7592

 

         

<think>我们正在讨论如何查看Linux系统中被占用端口。用户的问题集中在查看端口占用情况的方法上。 根据引用内容,我们可以总结出几种常用方法:netstatlsof、ss。 注意:用户要求生成相关问题,并按照特定格式(包括数学表达式格式)进行回答。 我们将详细说明三种主要方法,每种方法都给出具体命令和示例,并在适当位置添加引用标记。 同时,在最后生成相关问题。 注意:由于引用内容较多,我们将根据引用编号正确标注来源。 </think>### Linux 查看占用端口的方法详解Linux 系统中,可通过以下命令高效查看占用端口信息(需 `sudo` 权限查看完整信息): --- #### 1. **`netstat` 命令**(传统兼容) ```bash sudo netstat -tulnp ``` - **参数解析**: - `-t`:TCP 端口 - `-u`:UDP 端口 - `-l`:仅显示监听中的端口 - `-n`:以数字形式显示地址和端口 - `-p`:显示进程信息(需 sudo) - **筛选特定端口**(如 8080): ```bash sudo netstat -tulnp | grep ':8080' ``` 输出示例: ```bash tcp6 0 0 :::8080 :::* LISTEN 2597932/java # ↑ 进程PID ↑ ↑ 端口 ↑ ↑ 进程名 ↑ ``` > **关键标识**:出现 `LISTEN` 状态表示端口占用[^4][^5] --- #### 2. **`lsof` 命令**(精准定位) ```bash sudo lsof -i :端口号 ``` - **示例**(查看 3306 端口): ```bash sudo lsof -i :3306 ``` 输出示例: ```bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 1234 mysql 3u IPv4 12345 0t0 TCP *:3306 (LISTEN) # ↑ 进程名 ↑ PID ↑ ↑ 用户 ↑ ↑ 端口状态 ↑ ``` > **优势**:直接显示进程名、PID 和用户信息[^3] --- #### 3. **`ss` 命令**(高性能替代) ```bash sudo ss -ltnp ``` - **参数解析**: - `-l`:监听中的端口 - `-t`:TCP 端口(`-u` 为 UDP) - `-n`:数字格式 - `-p`:显示进程信息 - **筛选示例**: ```bash sudo ss -ltnp | grep ':80' ``` 输出示例: ```bash LISTEN 0 128 *:80 *:* users:(("nginx",pid=5678,fd=3)) # ↑ 状态 ↑ ↑ 端口 ↑ ↑ 进程名 ↑ PID ↑ ``` > **推荐理由**:比 `netstat` 更快,适合新系统[^3] --- ### 排查流程总结 1. **确认端口占用**: - 若命令无输出,表示端口空闲 - 出现 `LISTEN` 状态即被占用(注意区分 `LISTENING` 无效标识[^4]) 2. **终止占用进程**(需谨慎): ```bash sudo kill -9 PID # 示例:sudo kill -9 2597932 ``` 3. **验证端口状态**: ```bash sudo lsof -i :端口号 # 无输出表示释放成功 ``` --- ### 数学关系描述 设端口集合为 $P$,被占用端口子集 $P_{\text{occupied}}$,则检测过程可表示为: $$ P_{\text{occupied}} = \{ p \in P \mid \text{status}(p) = \text{LISTEN} \} $$ 其中 $\text{status}(p)$ 为端口状态函数,通过上述命令获取值域[^1][^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值