Linux脚本杀死在特定端口上侦听的进程

我有一个侦听TCP端口的进程(?0003)。 它不时崩溃 – 严重。 它停止工作,但继续占用端口一段时间,所以我甚至不能重新启动它。 我正在寻找这个自动化。

我现在所做的是:

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

看看什么是PID,然后:

 kill -9 <pid> 

有没有人有一个脚本(或EXE的事情),将两个步骤连接在一起,即。 从第一个命令parsingPID并传递给第二个?

你也可以这样做:

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

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

你去哪里,一条线给你

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

我认为python命令只是完整命令中的第一项,对吧? 如果你有正在运行的脚本的名字,你可以看看像pgrep -f

如果你确信唯一性,你也可以使用相关的pkill -f

那么killall <command>有多less个这样的过程?

如果这不起作用,请尝试:

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

这应该够了吧。

也许fuser命令与-k和-n选项可能有帮助。 说“男人fuser”的更多信息。