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

Linux_用 `ps` 按进程名过滤线程,以及用 `pkill` 按进程名安全杀进程

ps 按进程名过滤线程,以及用 pkill 按进程名安全杀进程

摘要:

  • 过滤线程信息:教你用 ps -Cpgrep+ps 等多种姿势,既精准又避免误杀。
  • 按名字杀进程:用 pkill 一把梭,优雅还是强杀随你选,附带“先查后杀”防误操作。

一、ps -eLf 只想看某个进程?别再用 grep 硬拼了!

日常排查多线程程序(如 Nginx、MySQL、Java)时,我们习惯 ps -eLf 一把梭,再 grep 过滤。
grep 会把自己也带出来,还要再 grep -v,略显笨拙。
下面给出 4 种更干净 的做法,按场景自取。

场景推荐命令特点
精确匹配命令名ps -C <进程名> -Lf自带过滤,无 grep 污染
模糊/正则匹配ps -Lf -p $(pgrep -d',' -f 'pattern')支持正则,先找 PID 再查线程
已知 PID 查线程ps -T -p <PID>ps -Lf -p <PID>只盯一个进程,输出更短
最暴力万能`ps -eLfgrep pattern`

1.1 精确匹配:-C 参数最香

ps -C nginx -Lf

示例输出:

UID        PID  PPID   LWP  C NLWP STIME TTY      STAT   TIME CMD
www-data  1234  1000  1234  0    5 10:11 ?        Sl     0:01 nginx
www-data  1234  1000  1235  0    5 10:11 ?        Sl     0:00 nginx
...
  • -C 直接按 命令名(不含路径) 过滤;
  • -Lf 保留线程信息(LWP 列即线程号);
  • 不会误匹配到 grep 本身。

1.2 模糊匹配:让 pgrep 帮你找 PID

# 正则匹配整条 cmdline
ps -Lf -p $(pgrep -d',' -f 'my.*pattern')
  • pgrep -f 支持正则,避免写复杂 awk
  • -d',' 把 PID 用逗号拼接,正好喂给 ps -p

1.3 已知 PID 只想看线程

ps -T -p 1234        # 简洁版,仅线程
ps -Lf -p 1234       # 同 -eLf 格式,但只针对 PID 1234

二、按进程名杀进程:用 pkill 优雅还是强杀?

记住口诀:pgrep 看,再 pkill

2.1 优雅终止(默认 SIGTERM)

pkill nginx
  • 默认发 SIGTERM(15),进程有机会清理资源后退出;
  • 无需手动拼 PID,一条命令搞定。

2.2 强制必杀(慎用!)

pkill -9 nginx
  • -9SIGKILL,内核直接拔电源,慎用
  • 适合进程彻底卡死、不响应 SIGTERM 的场景。

2.3 支持正则 / 整条 cmdline 匹配

pkill -f "python3 myserver.py"
  • -f 匹配 完整命令行,而不只是进程名;
  • 适合同名脚本但参数不同的场景。

2.4 先确认再杀:防误杀黄金流程

pgrep -a nginx        # 列出 PID + 完整命令行
# 检查无误
pkill nginx

2.5 老系统没有 pkill?一行兼容写法

ps -eo pid,comm | awk '$2=="nginx"{print $1}' | xargs kill -15

2.6 杀掉某用户的同名进程

pkill -u www-data nginx

三、一句话总结

  • 查线程
    精确:ps -C <进程名> -Lf
    模糊:ps -Lf -p $(pgrep -d',' -f 'pattern')

  • 杀进程
    先查:pgrep -a <进程名>
    再杀:pkill <进程名>pkill -9 <进程名>

<进程名> 换成你的真实进程即可,祝调试愉快!

http://www.xdnf.cn/news/18697.html

相关文章:

  • 机器学习-大语言模型Finetuning vs. Prompting
  • 大型语言模型基准测试综述《A Survey on Large Language Model Benchmarks.pdf》核心内容总结
  • 京东前端社招面经
  • 多维度指标交叉计算查询方案
  • 【芯片后端设计的灵魂:Placement的作用与重要性】
  • 6、RocketMQ消息积压问题如何解决
  • Python爬虫实战:Selenium模拟操作爬取马蜂窝旅游攻略
  • 数据挖掘 6.1 其他降维方法(不是很重要)
  • redis----list详解
  • 深度学习入门第一课——神经网络实现手写数字识别
  • 读《精益数据分析》:A/B测试与多变量测试
  • 【栈 - LeetCode】739.每日温度
  • [Java恶补day51] 46. 全排列
  • 无人机芯片休眠模式解析
  • 关于传统的JavaWeb(Servlet+Mybatis)项目部署Tomcat后的跨域问题解决方案
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法复习+单词第7回1
  • 基于知识图谱的装备健康智能维护系统KGPHMAgent
  • C++ #pragma
  • 少儿舞蹈小程序需求规格说明书
  • 【Hot100】二分查找
  • Fluent Bit系列:字符集转码测试(上)
  • 使用 Prometheus 监控服务器节点:Node Exporter 详解与配置
  • 实时监测蒸汽疏水阀的工作状态的物联网实时监控平台技术解析
  • 容器学习day02
  • 基于 OpenCV 与 Mediapipe 的二头肌弯举追踪器构建指南:从环境搭建到实时计数的完整实现
  • 力扣498 对角线遍历
  • 4G模块 EC200通过MQTT协议连接到阿里云
  • (LeetCode 每日一题) 498. 对角线遍历 (矩阵、模拟)
  • 撤回git 提交
  • 【龙泽科技】汽车车身测量与校正仿真教学软件【赛欧+SHARK】