type
status
date
slug
summary
tags
category
icon
password
好的,没问题!这是一篇完全按照您的要求,为微信公众号风格量身打造的原创推文。从标题到结尾,都注入了“爆款”基因,力求原创、生动、无AI痕迹。
文章标题:
端口又被占了?!别再抓狂!Linux大神私藏的3个“侦探”命令,一秒揪出真凶!
导语
“啊,救命!
Port 8080 was already in use.
”是不是感觉这句话,比“你胖了”还扎心?
想启动个Nginx,跑个Tomcat,或者调试个新写的Vue项目,满怀期待地敲下回车,结果终端冷冰冰地甩来一句“端口已被占用”。血压瞬间飙高!🤯
到底是哪个“不长眼”的进程,悄悄霸占了我的端口?是上次没关干净的“僵尸”服务,还是同事偷偷开了个“测试”?
别慌!今天,我们就化身Linux世界的福尔摩斯,掏出3个压箱底的神器命令,让你在10秒内精准定位并“解决”那个占着茅坑不拉屎的家伙!
第一位侦探:老牌名角 netstat
特点:经典、全面、人人都会
netstat
就像是警界的老法师,经验丰富,办事沉稳。虽然现在有了更快的“小鲜肉”,但它的地位依然不可动摇。想看清当前系统网络的全貌,找它准没错。亮出你的侦探工具:
掏出小本本记下这串“咒语”,它几乎能解决80%的端口查询问题。我们来拆解一下:
t
:显示 TCP 协议的连接。
u
:显示 UDP 协议的连接。
n
:直接显示IP地址和端口号,而不是转换成域名/服务名(快!)。
l
:只显示正在“监听”(Listen)状态的端口,也就是随时准备接受连接的服务。
p
:显示占用该端口的进程ID(PID)和进程名(这才是关键!)。
实战演练:
假如你的8080端口被占了,执行
netstat -tunlp | grep 8080
,你会看到类似这样的结果:看到了吗?真相只有一个!
:::8080
:说明8080端口正在被监听。
12345/java
:**“作案者”**就是它!进程ID(PID)是12345
,进程名是java
。
这下凶手找到了,是不是很简单?
第二位侦探:全能高手 lsof
特点:精准、强大、指哪打哪
如果说
netstat
是在排查整个犯罪现场,那 lsof
(List Open Files) 就是一个能直捣黄龙的特种兵。在Linux“一切皆文件”的哲学里,网络端口也是一种文件。lsof
的座右铭就是:“只要你敢开,我就能找到你!”亮出你的侦探工具:
想查哪个端口,直接告诉它!比如,还是倒霉的8080端口:
这命令也太直白了吧!
-i
就是指定网络连接,后面跟上冒号和端口号。实战演练:
执行后,结果一目了然:
lsof
直接把“嫌疑人”的档案甩你脸上:COMMAND
:进程名java
PID
:进程ID12345
USER
:进程主人myuser
lsof
的优点是查询目标极其明确,速度飞快,是解决“单一端口被占”问题的首选利器!第三位侦探:新生代“快男” ss
特点:快、更快、现代Linux标配
ss
(Socket Statistics) 是 netstat
的正统接班人。它被设计出来的唯一目的,就是为了“更快”。它直接从内核空间获取信息,不像netstat
那样还需要去读一堆虚拟文件,所以在处理海量网络连接时,速度优势极其明显。亮出你的侦探工具:
是不是感觉很眼熟?没错!它的参数几乎和
netstat
一模一样,学习成本基本为零,无痛切换!实战演练:
同样,我们用
ss -tunlp | grep 8080
来看看:看到了吗?
ss
的输出更简洁,直接在末尾用 users:(("java",pid=12345,...))
这样的格式告诉了你一切。小结一下: 在新的Linux发行版上,请优先拥抱
ss
,体验飞一般的速度!🚀抓到“真凶”后,如何“处置”?
找到PID(比如
12345
)之后,我们就有了“执法权”。1. 温柔劝退:
这相当于跟进程说:“哥们,自己体面点,收拾东西走吧。”它会尝试正常关闭。
2. 强力执法(慎用!):
如果温柔劝退没用,那就只能上硬招了。
-9
信号会强制终止进程,但可能会导致数据丢失或文件损坏,属于“最后的手段”。懒人福音:一键“找到并干掉”
想不想更酷一点?结合
lsof
和kill
,一条命令解决战斗!lsof -t -i :8080
:这里的t
选项让lsof
只输出PID,不输出其他信息。
$()
:这个语法会先执行括号里的命令,并将其结果(也就是PID)传递给kill
命令。
一气呵成,干净利落,深藏功与名!😎
总结一下,告别抓瞎!
好了,三位“端口侦探”已经全部介绍完毕,现在你也是半个专家了!
netstat
:经典怀旧,功能全面,但略显老态。
lsof
:指哪打哪的“特种兵”,查单个端口占用,又快又准。
ss
:现代Linux系统的首选,netstat
的完美替代品,主打一个“快”字。
下次再遇到“Port already in use”,不要再挠头,不要再叹气。优雅地打开终端,从这三个神器中任选一个,微笑着对那个捣乱的进程说声:“抓到你了!”
觉得有用?点个“在看”,转发给身边还在为端口占用而苦恼的小伙伴吧!让大家都成为Linux问题解决高手!
Loading...