如何终止在特定 IP 和端口上运行的进程?

如何终止在特定 IP 和端口上运行的进程?

我想知道有什么办法可以杀死在特定IP上运行的进程Ubuntu 14.04 上的本地 IP 和端口上的端口?最好是在一个命令中,但如果没有,bash 脚本也完全可以。

答案1

可能有更干净的方法,但大致如下:

netstat -lnp | grep 'tcp .*127.0.0.1:9984' | sed -e 's/.*LISTEN *//' -e 's#/.*##' | xargs kill

答案2

使用ss我们可以获取正在侦听特定 IP 和端口(对于 src127.0.0.1和 port )的进程/连接的详细信息80

sudo ss -lp  '( dport = :80 )' src 127.0.0.1

那么我们只能PID使用 来获取 并使用和grep杀死它们。xargskill

sudo ss -lp  '( dport = :80 )' src 127.0.0.1 | grep -Po "(?<=pid=).*(?=,)"\
| sort | uniq | xargs kill

您还可以使用-aswitch 而不是-l来获取所有侦听和非侦听套接字的列表。

答案3

fuserLinux 上有一个选项可以完全满足您的要求。

例如,fuser 80/tcp将打印绑定在该端口上的进程的 PID 并fuser -k 80/tcp杀死该进程。

答案4

本地计算机上的进程可以运行的唯一 IP 是127.0.0.1, lo,环回设备,称为localhost。那里的端口可以通过网络配置转发到公共IP地址。

我通常用来sudo lsof -i :<port>查看是什么导致了EADDRINUSE因为打字速度更快。

sudo lsof -i :443 | tail -1 | cut -f2 -d' ' | xargs kill

lsof如果您给出如下输出,将终止在端口 443 上运行的进程:

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
python3 32233  cat    4u  IPv4 24123106      0t0  TCP *:http-alt (LISTEN)

lsof --help

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

相关内容