Linux查看端口占用情况,并强制释放占用的端口

有时候关闭软件后,后台进程死掉,导致端口被占用。下面以TOMCAT端口8060被占用为例,列出详细解决过程。

解决方法:

1.查找被占用的端口

  1. netstat -tln
    

netstat -tln | grep 8060

netstat -tln 查看端口使用情况,而netstat -tln | grep 8060则是只查看端口8060的使用情况

 

2.查看端口属于哪个程序?端口被哪个进程占用

lsof -i:8060

COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME

java    20804   root   36u  IPv6 35452317      0t0  TCP *:pcsync-https (LISTEN)

3.杀掉占用端口的进程  根据pid杀掉

kill -9 20804

<think>嗯,用户想了解在Linux下如何查看哪个程序占用了特定端口。我记得之前学过的几个命令,比如netstat和lsof,应该能解决这个问题。首先,我需要回忆一下这两个命令的具体用法。 用户提到的是特定端口,所以可能需要用grep来过滤结果。比如使用netstat时,可以结合grep来查找特定端口号。例如,netstat -tuln | grep 80,这样就能看到80端口情况。不过netstat的参数可能有很多,需要确认正确的选项,比如-t表示TCP,-u表示UDP,-l显示监听中的端口,-n以数字形式显示端口号。这样组合起来应该是netstat -tuln,再加上grep过滤端口号。 另外,lsof命令也是一个常用的工具,可以直接用sudo lsof -i :端口号来查看占用端口的进程。这里的-i参数是用来查看网络连接,加上端口号就能直接定位。可能需要用sudo来获取权限,否则可能看不到所有信息。 用户可能还关心如何终止占用端口的进程,这时候需要先找到进程ID(PID),然后用kill命令杀掉进程。例如,通过netstat -tulnp可以显示PID,然后使用kill -9 PID来强制终止。 需要注意的是,不同的Linux发行版可能有些差异,比如在某些系统中netstat可能已经被弃用,推荐使用ss命令替代。不过对于大多数用户来说,netstat和lsof还是更常用和容易记住的。另外,权限问题也很重要,如果没有使用sudo,可能无法看到所有进程的信息,导致结果不准确。 用户的问题可能还涉及到如何安装这些工具,比如lsof可能默认没有安装,需要提示用户安装方法,比如使用apt-get install lsof。不过用户没有提到安装的问题,可能暂时不需要深入,除非在回答中提到如果命令不存在的情况。 总结下来,回答应该分步骤介绍几种主要的方法:使用netstat、lsof、ss命令,以及如何根据查到的PID终止进程。同时要提醒用户权限问题和不同命令的适用场景。确保每个步骤的命令示例正确,参数解释清楚,这样用户能一步步跟着操作。</think>### Linux查看端口占用的方法 #### 1. **使用`netstat`命令** `netstat`是网络统计工具,可查看端口占用情况: ```bash netstat -tuln | grep <端口号> ``` - **参数说明**: - `-t`:显示TCP协议 - `-u`:显示UDP协议 - `-l`:仅显示监听中的端口 - `-n`:以数字形式显示端口(不解析服务名称) - **示例**:查看80端口占用: ```bash netstat -tuln | grep 80 ``` 输出可能为:`tcp6 0 0 :::80 :::* LISTEN 2597932/java`,其中`2597932`是进程ID(PID)[^1]。 #### 2. **使用`lsof`命令** `lsof`用于列出打开文件的进程(包括网络端口): ```bash sudo lsof -i :<端口号> ``` - **示例**:查看8080端口占用: ```bash sudo lsof -i :8080 ``` 输出可能为:`java 2597932 user 3u IPv6 0xabc123 0t0 TCP *:http-alt (LISTEN)`,直接显示进程名称和PID[^2]。 #### 3. **使用`ss`命令(替代`netstat`的现代工具)** ```bash ss -ltnp | grep <端口号> ``` - **参数说明**: - `-l`:监听中的端口 - `-t`/`-u`:TCP/UDP协议 - `-n`:数字形式显示端口 - `-p`:显示进程信息 - **示例**:查看3306端口: ```bash ss -ltnp | grep 3306 ``` #### 4. **终止占用端口的进程** 通过上述命令获取PID后,使用`kill`终止进程: ```bash kill -9 <PID> # 强制终止进程 ``` - **示例**:终止PID为2597932的进程: ```bash kill -9 2597932 ``` 若权限不足,需添加`sudo`[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值