linux如何查看某个端口被哪个程序占用了

1. 不好意思,先切换到root

su root 如果不切换到root,看不到进程号

2. 查看端口被哪个占用

[root@localhost test]# netstat -apn | grep 8080
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      17997/unicorn maste 
tcp        0      0 127.0.0.1:8080          127.0.0.1:58802         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:8080          127.0.0.1:58836         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:8080          127.0.0.1:58904         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:8080          127.0.0.1:58870         TIME_WAIT   -         

看到第一行的LISTEN 17997/unicorn maste,17997就是占用的进程号

3.找出真身

[root@localhost test]# ps -ef | grep 17997
git      17997     1 21 22:01 ?        00:00:29 unicorn master -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
git      18108 17997  0 22:02 ?        00:00:00 unicorn worker[0] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
git      18111 17997  0 22:02 ?        00:00:00 unicorn worker[1] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
git      18114 17997  0 22:02 ?        00:00:00 unicorn worker[2] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
root     18301 16812  0 22:03 pts/0    00:00:00 grep --color=auto 17997
<think>我们有两个系统:Windows和Linux,需要分别说明如何查看端口哪个进程占用。根据引用[1]和引用[3],在Linux中可以使用以下方法:1.使用fuser命令:fuser-v端口号/tcp或fuser-v端口号/udp2.使用lsof命令:lsof-i:端口号3.使用netstat命令:netstat-antulp|grep端口号4.使用ss命令:ss-antulp|grep端口号根据引用[2],在Windows中可以使用:1.使用netstat命令:netstat-ano|findstr端口号2.然后根据得到的PID,使用任务管理器查看进程,或者使用tasklist命令:tasklist|findstrPID下面分别详细说明:###Linux系统####方法1:使用`fuser`命令```bashfuser-v80/tcp#查看TCP端口80的占用情况```-输出会显示进程的PID、用户以及命令-需要root权限才能查看所有进程####方法2:使用`lsof`命令```bashlsof-i:80#查看端口80的占用情况```-输出示例:```COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEnginx12345root6uIPv41234560t0TCP*:http(LISTEN)```####方法3:使用`netstat`命令```bashnetstat-tunlp|grep:80```-参数说明:-`-t`:TCP端口-`-u`:UDP端口-`-n`:数字形式显示-`-l`:仅显示监听套接字-`-p`:显示进程标识符和程序名称####方法4:使用`ss`命令(更现代的替代)```bashss-tunlp|grep:80```-参数同上,但`ss`比`netstat`更快>**注意**:以上命令可能需要root权限才能看到所有进程信息。###Windows系统####方法1:使用`netstat`和`tasklist`1.查找占用端口的进程PID:```cmdnetstat-ano|findstr:80```-输出示例:```TCP0.0.0.0:800.0.0.0:0LISTENING1234```-最后一列就是PID(例如1234)2.根据PID查找进程名称:```cmdtasklist|findstr1234```-输出示例:```nginx.exe1234Services016,960K```####方法2:使用任务管理器1.打开任务管理器(Ctrl+Shift+Esc)2.切换到“详细信息”选项卡3.根据PID列找到对应进程(如果看不到PID列,右键点击列标题,勾选“PID”)###通用步骤总结|系统|步骤||--------|----------------------------------------------------------------------||Linux|1.使用上述任一命令查找占用端口的PID<br>2.根据PID用`ps-p<PID>`查看进程详情||Windows|1.用`netstat-ano`查找PID<br>2.用`tasklist`或任务管理器查看进程|---###示例:Linux中查找80端口占用```bash#方法1:lsofsudolsof-i:80#方法2:netstatsudonetstat-tunlp|grep:80#方法3:sssudoss-tunlp|grep:80```###示例:Windows中查找80端口占用```cmdREM查找80端口占用的PIDnetstat-ano|findstr:80REM根据PID查找进程名tasklist|findstr<PID>```>**注意**:在Windows中,如果遇到权限问题,请以管理员身份运行命令提示符。---§§相关问题§§1.如何查看进程打开了哪些端口?2.如何释放被占用端口?3.Linux中`netstat`和`ss`命令有什么区别?4.Windows中如何结束占用端口的进程?</think>### 如何查看端口哪个进程占用(Windows/Linux) #### **Linux 系统方法** 1. **使用 `lsof` 命令**(推荐) ```bash lsof -i :端口号 ``` **示例**(查看 80 端口): ```bash lsof -i :80 ``` **输出**: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN) ``` - `PID` 列显示进程 ID,`COMMAND` 列显示进程名称[^1][^3] 2. **使用 `fuser` 命令** ```bash fuser -v 端口号/tcp ``` **示例**: ```bash fuser -v 80/tcp ``` 3. **使用 `netstat` 或 `ss` 命令** ```bash netstat -tulnp | grep :端口号 # 或 ss -tulnp | grep :端口号 ``` **示例**: ```bash ss -tulnp | grep :80 ``` 4. **定位进程详细信息** ```bash ps -aux | grep PID # 根据 PID 查看进程 ls -l /proc/PID/cwd # 查看进程工作目录[^3] ``` --- #### **Windows 系统方法** 1. **查找占用端口的 PID** ```cmd netstat -ano | findstr :端口号 ``` **示例**(查看 8080 端口): ```cmd netstat -ano | findstr :8080 ``` **输出**: ``` TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5678 ``` - 最后一列 `5678` 是进程 PID[^2] 2. **根据 PID 查找进程名** ```cmd tasklist | findstr PID ``` **示例**: ```cmd tasklist | findstr 5678 ``` **输出**: ``` javaw.exe 5678 Console 1 1,036 K ``` 3. **使用任务管理器** - 按 `Ctrl+Shift+Esc` 打开任务管理器 - 在 "详细信息" 选项卡中,根据 PID 查找进程 --- ### 端口冲突解决方案 当出现 `address already in use` 错误时: ```bash kill -9 PID # Linux/Mac 终止进程 taskkill /PID PID /F # Windows 终止进程 ``` --- ### 对比总结 | 功能 | Linux 命令 | Windows 命令 | |---------------------|-------------------------------|-------------------------------| | **查看端口占用** | `lsof -i :端口` / `ss -tulnp` | `netstat -ano \| findstr :端口` | | **根据 PID 查进程** | `ps -aux \| grep PID` | `tasklist \| findstr PID` | | **终止进程** | `kill -9 PID` | `taskkill /PID PID /F` | > **注意**: > - Linux 需要权限:普通用户可能需 `sudo` > - 部分命令需安装:`lsof`(Linux)、`net-tools`(Linux) > - 端口号需替换为实际数字(如 80, 3306, 8080) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值