Linux 脚本用于终止在特定端口上监听的进程

Linux 脚本用于终止在特定端口上监听的进程

我有一个监听 TCP 端口 (?0003) 的进程。它有时会崩溃 - 非常严重。它停止工作,但会继续占用端口一段时间,所以我甚至无法重新启动它。我希望实现自动化。

我现在做的是:

netstat -ntlp |grep -P "\*\:\d0003"

要查看 PID,然后:

kill -9 <pid>

是否有人有可以将这两个步骤链接在一起的脚本(或 EXE),即解析第一个命令中的 PID 并将其传递给第二个命令?

答案1

您也可以通过这种方式来做:

kill -9 $( lsof -i:?0003 -t )

答案2

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

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

答案3

好了,给你一行

netstat -ntlp | awk '$4~/:*0003$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}'

答案4

那么是否killall <command>存在多个这样的过程呢?

如果这不起作用请尝试:

PID=`netstat -ntlp |grep -P "\*\:\d0003"`; kill -9 $PID

这应该够了吧。

相关内容