EMP Asked: 2010-03-15 15:57:04 +0800 CST2010-03-15 15:57:04 +0800 CST 2010-03-15 15:57:04 +0800 CST 用于终止侦听特定端口的进程的 Linux 脚本 772 我有一个侦听 TCP 端口 (?0003) 的进程。它不时崩溃 - 非常糟糕。它停止工作,但继续占用端口一段时间,所以我什至无法重新启动它。我正在寻找自动化这个。 我现在做的是: netstat -ntlp |grep -P "\*\:\d0003" 要查看 PID 是什么,然后: kill -9 <pid> 有没有人有一个脚本(或EXE)将这两个步骤链接在一起,即。从第一个命令解析PID并将其传递给第二个? linux bash shell 6 个回答 Voted Peter Lyons 2010-03-15T16:20:57+08:002010-03-15T16:20:57+08:00 kill $(netstat -ntpl 2>/dev/null | egrep "^tcp .*:[0-9]0003"|awk '{print $7}'|cut -d / -f 1 ) 您可以这样做,kill -9而不是您认为 -9 是必需的。我重定向 netstat 标准错误,因为它在以非 root 身份运行时省略了一条消息,这对于此目的并不重要。我在正则表达式中包含 tcp 以过滤掉 tcp6。 Best Answer Deimosfr 2010-03-15T22:07:53+08:002010-03-15T22:07:53+08:00 你也可以这样做: kill -9 $( lsof -i:?0003 -t ) user37841 2010-03-15T16:16:55+08:002010-03-15T16:16:55+08:00 给你,一条线给你 netstat -ntlp | awk '$4~/:*0003$/{gsub(/\/.*/,"",$NF);cmd="kill -9 "$NF;system(cmd)}' ezpz 2010-03-15T16:21:14+08:002010-03-15T16:21:14+08:00 我认为该python命令只是完整命令中的第一个术语,对吗?如果您有正在运行的脚本的名称,您可以查看类似pgrep -f 如果你确定唯一性,你也可以使用相关的pkill -f Rickard von Essen 2010-03-15T16:02:54+08:002010-03-15T16:02:54+08:00 killall <command>这些过程不止一个呢? 如果这不起作用,请尝试: PID=`netstat -ntlp |grep -P "\*\:\d0003"`; kill -9 $PID 这应该够了吧。 John Carter 2010-03-15T17:21:59+08:002010-03-15T17:21:59+08:00 也许带有 -k 和 -n 选项的 fuser 命令可能会有所帮助。说“man fuser”以获取更多信息。
您可以这样做,
kill -9
而不是您认为 -9 是必需的。我重定向 netstat 标准错误,因为它在以非 root 身份运行时省略了一条消息,这对于此目的并不重要。我在正则表达式中包含 tcp 以过滤掉 tcp6。你也可以这样做:
给你,一条线给你
我认为该
python
命令只是完整命令中的第一个术语,对吗?如果您有正在运行的脚本的名称,您可以查看类似pgrep -f
如果你确定唯一性,你也可以使用相关的
pkill -f
killall <command>
这些过程不止一个呢?如果这不起作用,请尝试:
这应该够了吧。
也许带有 -k 和 -n 选项的 fuser 命令可能会有所帮助。说“man fuser”以获取更多信息。