杀死监听特定端口的进程的 Linux 脚本

EMP*_*EMP 2 linux shell bash

我有一个侦听 TCP 端口 (?0003) 的进程。它不时崩溃 - 很糟糕。它停止工作,但继续占用端口一段时间,所以我什至无法重新启动它。我正在寻找自动化。

我现在要做的是:

netstat -ntlp |grep -P "\*\:\d0003"
Run Code Online (Sandbox Code Playgroud)

要查看 PID 是什么,然后:

kill -9 <pid>
Run Code Online (Sandbox Code Playgroud)

有没有人有将这两个步骤链接在一起的脚本(或与此相关的 EXE),即。从第一个命令解析PID并将其传递给第二个?

Pet*_*ons 5

kill $(netstat -ntpl 2>/dev/null | egrep "^tcp  .*:[0-9]0003"|awk '{print $7}'|cut -d / -f 1 )
Run Code Online (Sandbox Code Playgroud)

你可以做kill -9而不是你认为 -9 是必需的。我重定向了 netstat stderr,因为它在以非 root 用户身份运行时省略了一条消息,这对于此目的并不重要。我在正则表达式中包含 tcp 以过滤掉 tcp6。

  • 不推荐使用反撇号,因为这会导致与引用相关的问题和错误。切换到 `$()` 并将使用它变成一种习惯。 (2认同)

小智 5

你也可以这样做:

kill -9 $( lsof -i:?0003 -t )
Run Code Online (Sandbox Code Playgroud)