当前位置: 首页 > news >正文

从手动kill到一键管理:我写了个多关键词进程终止脚本,运维效率直接拉满

从手动kill到一键管理:我写了个多关键词进程终止脚本,运维效率直接拉满

作为一名经常和服务器打交道的开发者,你一定遇到过这些场景:
想杀个Java应用进程,ps -ef | grep 输出一堆结果,翻半天找不到目标;明明要杀开发环境的ruiyi_oss,却差点误触生产环境的进程;多进程场景下,复制PID、执行kill -9,步骤繁琐还容易出错。

为了解决这些痛点,我花了半天时间写了一个多关键词交互式进程终止脚本——kill_process.sh。从单参数匹配到多关键词精确筛选,从固定选项到交互式选择,这个脚本帮我把进程管理的效率提升了至少3倍。今天就来聊聊这个脚本的开发思路和使用场景。

一、脚本核心功能:不止是“杀进程”

先放个最终版脚本的核心能力清单,看看它能不能解决你的痛点:

  1. 多关键词精确匹配:支持1个或多个关键词(如应用名+环境+端口),进程需同时包含所有关键词才会被匹配,告别“大海捞针”;
  2. 交互式安全操作:多进程时可选择“全部杀死”“单个杀死”或“取消操作”,每步操作需确认,杜绝误杀;
  3. 输入即确认:无需按回车,输入选项后自动响应,操作行云流水;
  4. 完善的状态反馈:查询进程、杀死进程、二次校验,每个步骤都有明确提示,结果一目了然;
  5. 详细帮助文档:执行./kill_process.sh -h,从参数说明到使用示例,新手也能快速上手。

二、为什么需要这个脚本?对比传统方式

举个实际场景:我要终止“ruiyi_oss应用、dev环境、运行在9660端口”的进程。

传统操作步骤:

  1. 执行ps -ef | grep ruiyi_oss,从一堆结果里找包含dev9660的进程;
  2. 复制目标进程的PID(比如2768130);
  3. 执行kill -9 2768130
  4. 再次执行ps -ef | grep ruiyi_oss,确认进程是否已终止。

问题:步骤多、易出错,若有多个进程,需重复复制PID,效率极低。

kill_process.sh的操作步骤:

  1. 执行./kill_process.sh ruiyi_oss dev 9660
  2. 脚本自动筛选出同时包含这3个关键词的进程,显示序号和详情;
  3. 输入s选择“单个杀死”,再输入进程对应序号,最后输入y确认;
  4. 脚本自动执行kill -9并二次校验,输出“成功杀死”结果。

优势:4步变1步,无需复制粘贴,每步有提示,安全性和效率双提升。

三、脚本核心设计思路

1. 多关键词匹配:如何实现“与逻辑”筛选?

脚本的核心是多关键词“与”匹配——进程命令必须同时包含所有输入的关键词。实现这个逻辑的关键是构造正则表达式。

比如输入ruiyi_oss dev 9660三个关键词,脚本会自动构造如下正则:

ruiyi_oss.*dev.*9660

含义是:进程命令中需先出现ruiyi_oss,之后出现dev,最后出现9660(顺序可调整,用.*匹配中间任意字符)。

同时,为了避免关键词中的特殊字符(如.*)影响正则匹配,脚本会对关键词进行转义处理:

escaped_key=$(echo "$key" | sed 's/[.[\*^$+?{}()|]/\\&/g')

2. 交互式选择:如何兼顾“便捷”与“安全”?

多进程场景下,最怕“一刀切”全部杀死。脚本设计了三层安全机制:

  • 选项拆分:提供a(全部杀死)、s(单个杀死)、c(取消)三个选项,覆盖所有场景;
  • 二次确认:选择“全部杀死”或“单个杀死”后,需输入y确认,其他任何输入均视为取消;
  • 输入即确认:用read -r -n 1实现“输入1个字符即响应”,无需按回车,兼顾便捷性和安全性。

核心代码片段:

echo -e "${YELLOW}发现多个进程(共$pid_count个),请选择操作:${NC}"
echo -e "${YELLOW}a) 全部杀死(输入a或1)${NC}"
echo -e "${YELLOW}s) 选择单个杀死(输入s或2)${NC}"
echo -e "${YELLOW}c) 取消操作(输入c或3)${NC}"
read -r -n 1 choice  # 输入1个字符即响应

3. 状态校验:如何确保进程真的被杀死?

杀死进程后,脚本会再次执行进程查询,确认目标进程是否已终止:

# 二次检测进程是否存在
result_after=$(get_process_info)
pids_after=$(echo "$result_after" | awk -v RS="__PID__" 'NR==2 {print $0}')
if [ -z "$pids_after" ]; thenecho -e "${GREEN}成功:所有目标进程已被杀死${NC}"
elseecho -e "${RED}警告:仍有残留进程(PID:$pids_after),可能未完全终止${NC}"
fi

这个步骤避免了“kill命令执行成功但进程未终止”的隐性问题,比如进程处于“僵尸状态”或权限不足。

四、脚本使用全指南

1. 基础准备

  • 保存脚本:将下面的完整脚本保存为kill_process.sh
  • 赋予权限:执行chmod +x kill_process.sh,让脚本可执行;
  • 查看帮助:执行./kill_process.sh -h,查看详细使用说明。

2. 常见使用场景

场景1:单关键词匹配(杀死所有ruiyi_oss相关进程)
./kill_process.sh ruiyi_oss

脚本会筛选出所有包含ruiyi_oss的进程,若有多个,可选择“全部杀死”或“单个杀死”。

场景2:双关键词匹配(杀死dev环境的user-service进程)
./kill_process.sh user-service dev

仅匹配同时包含user-servicedev的进程,精准定位开发环境应用。

场景3:多关键词匹配(杀死prod环境、9090端口的order服务)
./kill_process.sh order prod 9090

三关键词“与”匹配,适用于复杂场景下的精确筛选。

3. 交互流程演示

以“双关键词匹配多进程”为例,完整交互流程如下:

$ ./kill_process.sh ruiyi_oss dev
正在查询包含所有关键词[ruiyi_oss dev]的进程...查询到的进程信息(包含所有关键词[ruiyi_oss dev]):
----------------------------------------
1  root     2768130       1 49 02:01 ?        00:01:59 java -jar /niudun/app/ruiyi_oss_dev/ruiyi_oss.jar --spring.profiles.active=dev
2  root     2769000       1 30 02:10 ?        00:00:30 java -jar /niudun/app/ruiyi_oss_dev/ruiyi_oss_2.jar --spring.profiles.active=dev
----------------------------------------发现多个进程(共2个),请选择操作:
a) 全部杀死(输入a或1)
s) 选择单个杀死(输入s或2)
c) 取消操作(输入c或3)
请输入选项(输入后自动确认):
s请输入要杀死的进程序号(1-2),输入'q'退出(输入后自动确认):
1确认杀死进程(PID: 2768130)?[
http://www.dtcms.com/a/515838.html

相关文章:

  • uniapp兼容问题处理总结
  • 遗传算法在波动率策略优化中平衡计算效率与优化效果
  • 建立网站一般要多少钱wordpress 预订插件
  • 如何自建网站做外贸c2c网站都有哪些
  • 小红书item_get接口JSON数据解析指南
  • 【Linux】ssh升级到最新版本-以ubuntu为例
  • 算法中的链表结构
  • 【蓝队面试】Struts2漏洞原理与面试中常见的问题
  • 基于3D激光点云的障碍物检测与跟踪---(2)点云聚类
  • 测试 gRPC 调用
  • **发散创新:Web Components的深度探索与实践**随着Web技术的飞速发展,Web Components作为一
  • spark组件-spark sql
  • Copy Cell 解释
  • 列表使用练习题
  • 杭州悦数与复旦大学共建“先进金融图技术”校企联合研究中心”正式揭牌
  • 网站怎么做搜索栏蓝海网站建设
  • Win11系统更新导致博图v15.1授权报错
  • 项目案例作业3(AI辅助):使用DAO模式改造学生信息管理系统
  • 责任链模式:灵活处理请求的设计模式
  • 什么是邮件打开率?邮件营销打开率影响因素有哪些?
  • 未来的 AI 操作系统(七)——认知共生:AI 与人类的协作边界
  • 快速入门LangChain4j Ollama本地部署与阿里百炼请求大模型
  • 虫情测报灯:精准预警,守护农田安全
  • 如何设置电脑分辨率和显示缩放
  • 【GESP】C++四级真题 luogu-B4069 [GESP202412 四级] 字符排序
  • Solana 官宣中文名「索拉拉」,中文 Meme 叙事正成为链上新主流
  • 《巨神军师》在电脑上多开不同窗口不同IP的教程
  • led灯 东莞网站建设公司注册资金减少意味着什么
  • 如何正确理解flink 消费kafka时的watermark
  • 未来的 AI 操作系统(六)——从“大模型”到“小智能”:Agent生态的去中心化演化