一条指令解决Linux和Windows下杀死指定端口进程的方法(附Shell和Batch脚本)

前言

在日常开发和系统管理中,经常会遇到需要终止特定端口上的进程的情况。本文将介绍如何在 Linux 和 Windows 系统下,使用一条指令来杀死指定端口的进程,同时还将提供相应的 Shell 脚本和 Batch 脚本示例,以实现更便捷的操作。

Linux下的解决方法:

在 Linux 系统中,你可以使用 kill 命令来终止指定端口上的进程。以下是一条结合 lsof 命令的命令示例,它会查找指定端口(比如 8080)的进程并杀死它:(:以下全程root操作,非root操作请自行添加sudo)

kill -9 `lsof -ti:8080`

这条命令中,lsof -ti:8080 会找到端口 8080 监听的进程 ID,然后将其传递给 kill -9 命令来终止进程。这种方法简洁高效,一条命令搞定。

Shell脚本:

如果你想将这个操作封装成一个 Shell 脚本以便反复使用,可以创建一个名为 kill-port.sh 的文件,内容如下:

#!/bin/bash

if [ $# -ne 1 ]; then
  echo "Usage: $0 <port>"
  exit 1
fi

port=$1
kill -9 $(lsof -ti :$port)

通过执行 chmod +x kill-port.sh 命令,赋予脚本执行权限,然后可以使用 ./kill-port.sh 8080 这样的命令来杀死指定端口的进程。

演示操作如下:

在这里插入图片描述
上述通过指令lsof -i :8080查看8080端口占用情况,这里LZ使用脚本的时候特意多输入一个param2参数。脚本中的if校验就提示你怎么用该脚本了。杀死进程后再次使用指令lsof -i :8080检查8080端口是否被kill

Windows下的解决方法:

在 Windows 系统中,打开cmd(最好是以管理员身份运行),可以使用 netstat 命令来查找端口对应的进程 ID,然后使用 taskkill 命令终止进程。以下是一条结合这两个命令的命令示例,用于杀死端口 8080 上的进程:

for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8080') do taskkill /F /PID %%a

Batch脚本:

鼠标双击脚本执行,用户输入指定进程端口,回车等待完成三秒后自动关闭cmd窗口。比如杀死9060端口,步骤:(1、创建txt文件 —>2、复制以下脚本内容—>3、文件后缀改为.bat—> 鼠标双击脚本执行即可)。脚本内容如下:

@echo off
chcp 65001

set/p port=kill-port:
echo port : %port%

set pid=
set executableFile=
for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
    if [%%d] EQU [LISTENING] (
        set pid=%%e
    )
)

if "%pid%"=="" (
    echo 未找到监听端口为 %port% 的进程,无需终止。
) else (
    for /f "usebackq tokens=1-5" %%a in (`tasklist ^| findstr %pid%`) do (
        set executableFile=%%a
    )
    echo 现在将终止进程:pid %pid%,可执行文件:%executableFile%
    taskkill /f /pid %pid%
)

timeout /t 3 /nobreak > nul

在当前脚本中chcp 65001设置UTF-8格式保证中文不乱码,timeout命令,使提示信息能够被看到。

演示操作如下:

  1. 成功终止操作显示如下
    在这里插入图片描述

  2. 无需终止操作显示如下
    在这里插入图片描述

总结:

通过本文介绍的方法和示例,你可以轻松地在 Windows 和 Linux 系统下终止指定端口的进程,提高了操作的效率和便捷性。无论是直接在命令行中执行一条命令,还是使用脚本封装操作,都能够更加高效地管理进程,确保系统正常运行。

猜你喜欢

转载自blog.csdn.net/Da_zhenzai/article/details/132595516