根据端口号,如何一条命令kill掉对应所有相关进程?
发布于 作者:苏南大叔 来源:程序如此灵动~
经常会发现端口冲突的情况,比如苏南大叔最近在调试的一套开源程序,非要占用8080端口。而在苏南大叔的测试机上面,8080分给了apache,kill掉apache之后,狗血的发现还有另外一个nginx也在抢这个8080。这完全不按套路出牌啊。

本篇文章中,苏南大叔提供了两个组合好的命令,可以直接干掉所有的相关程序。测试环境:mac。并不需要先lsof,然后再kill掉对应的pid了。非常好用,推荐大家尝试。推荐前置阅读文章:
命令一(推荐)
命令:
kill -kill $(lsof -t -i :{port})例如:
kill -kill $(lsof -t -i :8080)
如果有报错信息的话,例如:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]那么,很有可能对应的端口号是没有任何监听的。可以理解为命令被正确执行。
命令二
命令:
lsof -P | grep ':{port}' | awk '{print $2}' | xargs kill -9例如:
lsof -P | grep ':8080' | awk '{print $2}' | xargs kill -9命令二的执行时间略显较长,效率较低。不推荐。

相关文章
总结
这两个组合命令的执行效率上来看,前者方案一是最好的选择,可以做到快速解决问题,推荐大家使用。而方案二,则需要几秒的时间。所以,对比很明显。这两个组合命令的好处就是:直奔目的,就是要kill掉这个端口号对应的所有程序,根本不关心具体是啥程序。简单好用!更多苏南大叔的mac使用技巧,请点击: