如何根据端口查找进程并将其全部杀死? [复制]
Posted
技术标签:
【中文标题】如何根据端口查找进程并将其全部杀死? [复制]【英文标题】:How to find processes based on port and kill them all? [duplicate] 【发布时间】:2011-06-29 22:50:29 【问题描述】:根据端口号查找进程并将其全部杀死。
ps -efl | grep PORT_NUMBER | kill -9 process_found_previously
如何补完最后一栏?
【问题讨论】:
【参考方案1】:ps -efl | grep PORT_NUMBER
的问题在于,PORT_NUMBER
也可能与ps
输出中的其他列匹配(日期、时间、pid,...)。如果由 root 运行,可能会导致杀戮!
我会这样做:
PORT_NUMBER=1234
lsof -i tcp:$PORT_NUMBER | awk 'NR!=1 print $2' | xargs kill
命令分解
(lsof -i tcp:$PORT_NUMBER
) -- 列出所有正在侦听该 tcp 端口的进程
(awk 'NR!=1 print $2'
) -- 忽略第一行,打印每行的第二列
(xargs kill
) -- 将结果作为参数传递给kill
。可能有几个。
【讨论】:
Fuser(下)更简单 这很棒。现在有一个可爱的小别名:killport() lsof -i tcp:$1 | awk 'NR!=1 print $2' | xargs kill
通过端口杀掉现在只是一个写作的例子,例如:killport 3984
看看下面 DanS 的回答 (***.com/a/12295745/67824)。如果您使用完全用于此目的的 -it
选项,则可以不使用 awk
: -t 指定 lsof 应仅生成带有进程标识符且没有标题的简洁输出 - 例如,以便输出可以被管道杀死(1)。。不用说,这将是一种更好、更可靠的方法。
谁能提供一个我们可以在涉及多个端口时使用的特技,例如当 nginx 在多个端口上运行 100 个进程时。谢谢。
只是一个补充:A=1234; B=4567; lsof -i tcp:$A -i tcp:$B -t | xargs kill
【参考方案2】:
1.) lsof -w -n -i tcp:8080
2.) kill -9 processId
【讨论】:
这里说了很多次了,不要用kill -9
,试试kill
或者用kill -15
SIGTERM 什么,如果不行,最后用kill -9
强制。跨度>
【参考方案3】:
kill $( lsof -i:6000 -t )
或者如果您需要权限:
sudo kill $( sudo lsof -i:6000 -t )
【讨论】:
这在大多数情况下都有效,但似乎存在多个进程可以在同一个端口上侦听的边缘情况,上面的方法将失败:***.com/questions/1694144/…。 我让 nginx 在同一个端口上运行多个进程。 (+1) 那里有很好的答案。我想知道如何在它之前添加一个测试条件。我的意思是,我想首先检查端口是否实际被进程使用。因此,脚本将类似于:test <check if the port 6000 is being used> && kill $( lsof -i:6000 -t )
。任何建议都会有所帮助。【参考方案4】:
建议使用 fuser 命令:
fuser -k -TERM -n tcp $PORT_NUMBER
【讨论】:
这其实是最好的答案。当您可以简单地使用现有实用程序时,为什么还要麻烦管道命令? 这个 fuser 命令在 Mac OS X 中不起作用,但 Shawn 的 lsof 命令可以 :) 我的实际命令是:fuser -k -TERM $PORT/tcp
请参阅下面的@Cryptopat response【参考方案5】:
sudo fuser -k 8080/tcp
一个容易记住的。
此语法可能比问题的日期更新!
【讨论】:
【参考方案6】:... | awk ' print $4 ' | xargs kill -9
请在运行前使用“echo”而不是“kill”进行测试
【讨论】:
请不要kill -9
partmaps.org/era/unix/award.html#uuk9letter
@NathanKidd 链接是德语 >_>
@NathanKidd 该链接已失效,但这里有一个关于它的 SO 讨论 ***.com/questions/690415/…。【参考方案7】:
杀死所有侦听特定端口的进程,例如8864端口
kill -9 $ \`lsof -i:8864 -t\`
用你想要的端口替换 8864。
【讨论】:
以上是关于如何根据端口查找进程并将其全部杀死? [复制]的主要内容,如果未能解决你的问题,请参考以下文章