linux杀死端口号命令,关于unix:如何杀死Linux上特定端口上运行的进程?

我尝试使用tomcat /bin目录中的./shutdown.sh关闭tomcat。 但发现服务器没有正常关闭。 因此我无法重启我的tomcat正在端口8080上运行。

我想杀死在8080上运行的tomcat进程。 我首先想要在特定端口(8080)上运行进程列表,以便选择要杀死的进程。

shell脚本可能重复以杀死侦听端口3000的进程?

此fuser 8080/tcp将打印您在该端口上绑定的进程的PID。

而这个fuser -k 8080/tcp会杀死这个过程。

仅适用于Linux。更普遍的是使用lsof -i4(或IPv6用于6)。

这是否也关闭了一个可能连接到8080的套接字?

当然,处理完成后所有文件描述符都会关闭。

它没有正确关闭端口。在父进程被终止后,端口进入TIME_WAIT状态。操作系统最终将在大约60秒后完全关闭端口。这意味着您不能重复使用该端口至少60秒(除非您将重用选项提供给套接字)。

我使用linux,我得到bash: fuser: command not found。

在达尔文上,必须使用不同版本的fuser。只需要一个文件,不支持-k。

'fuser -k -n tcp 8080'也会杀死这个过程

谢谢这对我有用

@dbliss fuser是psmisc的一部分。如果你得到fuser: command not found,安装psmisc。对于CentOS / RHEL 7,运行sudo yum install psmisc

要列出监听端口8080的任何进程:

lsof -i:8080

要杀死侦听端口8080的任何进程:

kill $(lsof -t -i:8080)

或者更猛烈地:

kill -9 $(lsof -t -i:8080)

(-9对应于SIGKILL - terminate immediately/hard kill信号:请参阅杀死信号列表以及kill命令中-9选项的用途是什么?如果没有为kill指定信号,则TERM信号也为-15或soft kill被发送,有时不足以杀死进程。)

kill:usage:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...或kill -l [sigspec]这是我在执行命令时得到的内容

@SudhirBelagali用超级用户sudo做了你

也在我的Mac上工作

我想补充一点,有时你没有权限看到进程ID,在这种情况下你需要做sudo lsof -i:8080。

为什么第二个提示更暴力?

@Webman更猛烈地意味着它很好地杀死了我的网络浏览器:(这是Gal Bracha的最佳解决方案:kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

@Webman -9对应SIGKILL - terminate immediately/hard kill:请参阅kill命令列表以及kill命令中-9选项的用途是什么?)

基于此,使用sudo:killport() {sudo kill -9 $(sudo lsof -t -i:${1} -sTCP:LISTEN)}然后killport 8080

使用该命令

sudo netstat -plten |grep java

使用grep java作为tomcat使用java作为其进程。

它将显示具有端口号和进程ID的进程列表

tcp6       0      0 :::8080                 :::*                    LISTEN

1000       30070621    16085/java

/java之前的数字是进程ID。现在使用kill命令终止进程

kill -9 16085

-9暗示该过程将被强行杀死。

您可能希望添加一个可能需要root权限才能通过netstat获取进程名称。

@JonasWielicki你可以看到你拥有的拥有root权限的人。

我需要netstat的root权限。有没有办法真正了解这个过程来自哪里?据我所知,我关闭了所有应用程序,但它可能来自终端窗口,我无意中将进程推送到后台任务。也许我应该运行终端命令'ps'来先查看所有进程...

谢谢,杀死$(lsof -t -i:8080)

我会在特定端口上添加这个单行只能杀死LISTEN:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

我认为这应该是最好的答案。谢谢@Gal Bracha

这是最好的解决方案,因为它也不会杀死我的浏览器!

您可以使用lsof命令。

这里的端口号是8090

lsof -i:8090

此命令返回此端口上的打开进程列表。

就像是…

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

要释放端口,请使用它终止进程(进程ID为75782)...

kill -9 75782

这个对我有用。

这是原帖子的链接:链接

强行杀死进程你需要使用-9像kill -9 75782;因为有时很少有进程不会被杀死

这也是在Mac OS上工作的人

如果要终止在端口号8080上运行的进程,则首先需要找到8080端口进程标识号(PID),然后将其终止。运行以下命令查找8080端口号PID:

sudo lsof -t -i:8080

这里,

sudo - 命令管理员权限(用户ID和密码)。

lsof - 文件列表(也用于列出相关进程)

-t - 仅显示进程ID

-i - 仅显示与Internet连接相关的进程

:8080 - 仅显示此端口号中的进程

因此,您现在可以使用以下命令轻松终止PID:

sudo kill -9

这里,

kill - 命令杀死进程

-9 - 有力地

您可以使用以下命令使用一个命令终止特定端口上的进程:

sudo kill -9 $(sudo lsof -t -i:8080)

有关更多信息,请参阅以下链接

如何在linux上的特定端口上终止进程

谢了哥们。 sudo kill -9 $(sudo lsof -t -i:8080)为我工作

这将打印到stdout 上运行的所有内容的进程ID:

fuser -n tcp

它还会向stderr打印一些东西,所以:

fuser -n tcp 2> /dev/null

然后,我们可以将这些进程ID提供给kill命令:

sudo kill $(fuser -n tcp 2> /dev/null)

如果你做了很多,你也可以将它放在一个函数中:

function killport() {

sudo kill $(fuser -n tcp $1 2> /dev/null)

}

要知道在特定端口上运行的服务的pid:

netstat -tulnap | grep :*port_num*

您将获得该过程的描述。现在使用kill或kill -9 pid。容易被杀死。

例如

netstat -ap | grep :8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/java

现在:

kill -9 1880

请记住以root运行所有命令

获取任务的PID并将其杀死。

lsof -ti:8080 | xargs kill

试试这样,

sudo fuser -n tcp -k 8080

lsof -i tcp:8000

此命令列出有关在端口8000中运行的进程的信息

kill -9 [PID]

此命令会终止进程

我刚刚注意到我几周前意外地投了这个,如果你稍微编辑你的anwer我应该能够删除它

Linux:首先,如果你知道端口,你可以找到这个命令的PID:

netstat -tulpn

例:-

Local Address  Foreign Address  State    PID/Program name

:::3000       :::*             LISTEN    15986/node

然后你进行杀戮过程。运行以下命令:

kill -9 PID

示例: -

杀了-9 15986

Linux:如果您知道端口,则可以使用此命令:

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

然后,您将获取第一列(例如:f100050000b05bb8)并运行以下命令:

rmsock f100050000b05bb8 tcpcb

杀人过程。

rmsock:找不到命令

kill -9 `fuser 8080/tcp|xargs -n 1`,此命令还会终止使用TCP连接侦听端口8080的进程

您可以知道系统中运行的所有端口的列表及其详细信息(pid,地址等):

netstat -tulpn

您可以通过以下命令提供端口号来了解特定端口号的详细信息:

sudo netstat -lutnp | grep -w '{port_number}'

例如:sudo netstat -lutnp | grep -w'8080'

详细信息将提供如下:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

如果你想使用pid杀死进程,那么:kill -9 {PID}

如果要使用端口号终止进程:fuser -n tcp {port_number}

如果您无法访问任何内容,请使用sudo。

选择端口号并在netstat命令中应用grep,如下所示

netstat -ap | grep :7070

控制台输出

tcp 0 0 :::7070 :::* LISTEN 3332/java

基于PID(进程标识号)终止服务

kill -9 3332

sudo apt-get install psmisc (or sudo yum install psmisc)

sudo fuser 80/tcp

结果:

80 / tcp:1858 1867 1868 1869 1871

一个一个地杀死进程

杀死-9 1858

以@ veer7所说的为基础:

如果你想知道端口上的内容,请在杀死之前执行此操作。

$ sudo netstat -plten |grep java

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/java

tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/java

tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/java

$ ps 25296

PID TTY      STAT   TIME COMMAND

25296 ?        Sl     0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom

使用'ps'和netstat报告的进程数

与Git Bash的其他方式:

stopProcessByPortNumber() {

port=":${1}"

portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"

processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"

echo $processId

taskkill -PID $processId -F

}

在Windows中,它将是netstat -ano | grep"8080",我们收到以下消息TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076

我们可以使用taskkill /F /PID 10076终止PID

问题显然是要求Linux帮助;不是Windows。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值