终止端口 3000 上的所有进程。这是尝试的方法:
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632007 18200/node
ubuntu@111:~/chatapp$ sudo kill 18200
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632207 18349/node
ubuntu@111:~/chatapp$ sudo killall node
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632364 18414/node
ubuntu@111:~/chatapp$
答案1
您可以使用以下命令来获取pid
:
sudo netstat -peanut | grep 3000 | awk '{ print $9 }' | sed 's:/[^/]*$::' | grep -Eo '[0-9]{1,5}'
awk
命令获取第 9 个字段。
sed
命令获取pid
前面的斜杠。
并且 grep 命令只返回数字以消除多余的行。
在这里您可以简单地进行循环并终止进程。
答案2
某些程序除非使用 sudo 运行,否则不会显示netstat
。比较以下两次运行:
$ netstat -natp | grep tcp6
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::25 :::* LISTEN -
tcp6 0 0 :::445 :::* LISTEN -
tcp6 0 0 :::139 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN
$ sudo netstat -natp | grep tcp6
[sudo] password for xieerqi:
tcp6 0 0 :::25 :::* LISTEN 1522/master
tcp6 0 0 :::445 :::* LISTEN 770/smbd
tcp6 0 0 :::139 :::* LISTEN 770/smbd
tcp6 0 0 :::22 :::* LISTEN 1190/sshd
至于终止与端口本身相关的进程,这只是解析输出netstat
(awk 可以做到)并将该命令的输出通过管道传输到的简单情况xargs -I {} kill -TERM {}
。
以下是如何使用 解析输出awk
。默认情况下,awk 使用空格将输出拆分为字段,因此我必须循环遍历所有字段(由于存在多个空格,awk 认为实际文本之间存在多个字段)。
$ sudo netstat -natp | awk '/:53579/{sub(/\//," ");for(i=1;i<=NF;i++){\
> if($i~/ESTABLISHED/||/LISTEN/||/CLOSE WAIT/) print $(i+1)}}'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
5027
剩下的就只是
that_command_above | xargs -I {} kill -TERM {}
答案3
使用 killport
可以从这里下载 killport,使用以下命令:
wget https://raw.githubusercontent.com/abdennour/miscs.sh/master/killport
sh killport 3000
其他方法可以使用这个:
sudo kill -9 3000