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

shell实现查询进程号并批量kill(脚本)

问题或需求描述

在shell中,如果你想通过命令行查询出一系列匹配某个关键词的进程,并使用xargs命令批量结束这些进程,可以按照以下步骤操作:

# 查询并提取进程号
pgrep -f "关键词" | xargs kill# 或者,如果你想使用更强力的kill指令(比如kill -9,即SIGKILL信号,立即结束进程)
pgrep -f "关键词" | xargs kill -9# 如果你想通过进程名而非命令行参数来查找进程,可以去掉-f标志
pgrep "进程名" | xargs kill -9# 如果你要更精确地匹配进程,避免误杀包含关键词的子进程,可以结合grep和awk一起使用,例如:
ps -ef | grep '关键词' | grep -v grep | awk '{print $2}' | xargs kill -9

这里的关键词是你想要匹配的进程的部分或全部名字,pgrep命令可以根据进程名或命令行参数来查找进程。

在这里插入图片描述

实例演示

本地有3个ES的进程,由于是java进程我们直接使用jps查询就可以。

如现有3个进程:

jps
51056 org.elasticsearch.bootstrap.Elasticsearch
49269 org.elasticsearch.bootstrap.Elasticsearch
52633 Jps
49692 org.elasticsearch.bootstrap.Elasticsearch

执行批量关闭:

jps | grep org.elasticsearch.bootstrap.Elasticsearch | awk  '{print $1}' | xargs kill -SIGTERM

结果,全部成功关闭。

附录

pgrep命令介绍

pgrep 是一个在 Linux 系统中广泛使用的命令行工具,它是 procpsprocps-ng 软件包的一部分,通常预装在大多数 Linux 发行版中。pgrep 主要用于查找当前系统中符合条件的正在运行的进程,并输出相应的进程ID(PID)。

命令功能:
pgrep 允许用户根据进程名称、命令行参数、用户名称等多种条件来查找进程。只需提供与进程相关联的模式作为参数,pgrep 就能快速定位到正在运行的对应进程并返回其PID。

基本语法:

pgrep [options] pattern

常用选项:

  • -f:模式字符串不仅匹配进程名,还匹配整个命令行。
  • -l:除了进程ID外,还显示进程的完整命令行。
  • -u:按照拥有进程的用户名称进行匹配。
  • -x:精确匹配整个进程名,而不是部分匹配。
  • -n:只显示最新(最近创建的)的一个匹配进程。
  • -o:如果多个进程匹配,只显示每个进程的一个PID。

例如,如果你想找出名为 nginx 的所有进程,可以直接运行:

pgrep nginx

如果想精确匹配且仅获取一个PID,则可以这样使用:

pgrep -x nginx

由于 pgrep 结合了正则表达式的强大功能,因此在管理和调试系统进程时非常有用,特别是与 pkill 命令结合使用时,能够方便地终止特定的进程。

jps命令简介

jps 是 Java 平台上一个用于查看当前系统中 Java 虚拟机 (JVM) 运行状态的命令行工具,它是 JDK(Java Development Kit)的一部分,通常位于 JAVA_HOME/bin 目录下。在 Linux 和 Unix 系统中,jps 命令主要用于检查哪些 Java 应用程序正在运行及其相关信息。

命令功能:
jps 命令主要用于列出当前系统中所有的 Java 应用程序进程,并显示它们的进程 ID(PID)以及主类(main class)或包含主类的 JAR 文件名。这对于管理大量基于 Java 的服务尤其有用,因为它可以帮助用户迅速识别和定位正在运行的 Java 进程。

基本语法:

jps [options] [hostid]

常用选项:

  • -q:仅显示进程ID,不显示类名或 JAR 名称。
  • -m:显示启动Java应用时传递给main方法的参数。
  • -l:输出主类的完整包名或JAR文件全路径名。
  • -v:显示JVM启动时传递的详细JVM参数。

例如:

  • 列出所有Java进程及其主类名称:

    jps
    
  • 只显示Java进程的PID:

    jps -q
    
  • 显示Java进程的PID以及启动时传递给main方法的参数:

    jps -m
    

相关文章:

  • Git学习笔记之基础
  • 2015年认证杯SPSSPRO杯数学建模D题(第二阶段)城市公共自行车全过程文档及程序
  • [深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五
  • 推荐多样性 - 华为OD统一考试(C卷)
  • PEReDi 完全隐私的央行数字货币方案
  • SiLM8260ADCS-DG带米勒钳位功能 双通道隔离驱动器 完美解决了干扰发热问题
  • index.js:235 uView提示:maxDate不能小于当前时间
  • 100个openharmony开源demo:1.日历
  • ReactNative项目构建分析与思考之RN组件化
  • Git的使用记录+坑的处理
  • VTK9.2.0+Qt5.14.0 绘制点云
  • STM32F103 CubeMX 使用USB生成键盘设备
  • 蓝桥杯刷题(十四)
  • 分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)
  • 千益畅行 || 共享旅游卡推广运营怎么做?
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android交互
  • C# 免费离线人脸识别 2.0 Demo
  • Debian下无root权限使用Python访问Oracle
  • Flannel解读
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java到底能干嘛?
  • Mocha测试初探
  • React组件设计模式(一)
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • SQLServer之创建显式事务
  • SwizzleMethod 黑魔法
  • tab.js分享及浏览器兼容性问题汇总
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 编写高质量JavaScript代码之并发
  • 电商搜索引擎的架构设计和性能优化
  • 记一次删除Git记录中的大文件的过程
  • 前端路由实现-history
  • 详解移动APP与web APP的区别
  • 项目实战-Api的解决方案
  • 赢得Docker挑战最佳实践
  • 在weex里面使用chart图表
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 飞书APP集成平台-数字化落地
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (第27天)Oracle 数据泵转换分区表
  • (一)WLAN定义和基本架构转
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net CoreRabbitMQ消息存储可靠机制