📅  最后修改于: 2023-12-03 14:59:56.553000             🧑  作者: Mango
本文介绍如何使用 Shell-Bash 脚本编写一个 CLI(命令行界面)工具,用于杀死正在侦听指定端口的程序进程。通过该工具,程序员可以更方便地查找并关闭占用特定端口的进程,解决端口冲突等问题。
lsof
命令获取正在侦听的端口列表及其对应的进程 ID(PID)。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
将以上代码保存为 kill_port.sh
文件。
打开终端,切换到脚本所在的目录。
执行以下命令,给脚本添加执行权限:
chmod +x kill_port.sh
执行以下命令,运行脚本,并按照提示输入要关闭的端口:
./kill_port.sh
请注意,脚本需要以管理员或超级用户权限运行,否则可能无法杀死进程。
本文介绍了如何使用 Shell-Bash 编写一个 CLI 工具,用于杀死正在侦听指定端口的程序进程。通过该工具,程序员可以轻松解决端口冲突问题,并加快开发调试的效率。希望本文对你有所帮助!