我有一个监听 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
这应该够了吧。