📜  cli 杀死正在侦听端口的内容 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:56.553000             🧑  作者: Mango

CLI 杀死正在侦听端口的内容

简介

本文介绍如何使用 Shell-Bash 脚本编写一个 CLI(命令行界面)工具,用于杀死正在侦听指定端口的程序进程。通过该工具,程序员可以更方便地查找并关闭占用特定端口的进程,解决端口冲突等问题。

实现思路
  1. 使用 lsof 命令获取正在侦听的端口列表及其对应的进程 ID(PID)。
  2. 逐个检查端口对应的进程程序,并根据条件匹配判断是否为我们要关闭的目标进程。
  3. 如果是目标进程,使用 kill 命令发送终止信号杀死进程。
实现步骤

以下是一个示例的 Shell-Bash 脚本代码,用于杀死正在侦听指定端口的程序进程:

#!/bin/bash

# 1. 获取正在侦听的端口列表及其对应的进程 ID(PID)
port_list=$(lsof -iTCP -sTCP:LISTEN -n -P | awk '{print $2,$9}' | grep -E ":\d+" | awk '{print $2}')

if [[ -z $port_list ]]; then
  echo "No processes listening on any port."
  exit 0
fi

# 2. 输入要关闭的端口
echo "Enter the port number you want to terminate the process for:"
read target_port

# 3. 逐个检查端口对应的进程程序,并关闭目标进程
process_killed=false

for port in $port_list; do
  if [[ $port == *":$target_port" ]]; then
    pid=$(echo $port | awk -F: '{print $1}')
    process_name=$(ps -p $pid -o comm=)

    if [[ -n $process_name ]]; then
      echo "Killing process with PID $pid ($process_name) listening on port $target_port ..."
      kill -9 $pid
      process_killed=true
    fi
  fi
done

# 4. 返回结果
if [[ $process_killed = true ]]; then
  echo "Process terminated successfully."
else
  echo "No process listening on port $target_port."
fi
使用方法
  1. 将以上代码保存为 kill_port.sh 文件。

  2. 打开终端,切换到脚本所在的目录。

  3. 执行以下命令,给脚本添加执行权限:

    chmod +x kill_port.sh
    
  4. 执行以下命令,运行脚本,并按照提示输入要关闭的端口:

    ./kill_port.sh
    

    请注意,脚本需要以管理员或超级用户权限运行,否则可能无法杀死进程。

结论

本文介绍了如何使用 Shell-Bash 编写一个 CLI 工具,用于杀死正在侦听指定端口的程序进程。通过该工具,程序员可以轻松解决端口冲突问题,并加快开发调试的效率。希望本文对你有所帮助!