linux 查看进程(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言:进程管理是 Linux 系统的“生命线”

在 Linux 系统中,进程(Process)如同人体内的细胞,承载着各种应用程序的运行。无论是开发环境中的服务进程、调试中的后台任务,还是系统守护进程,都需要开发者具备查看、监控和管理进程的能力。对于编程初学者和中级开发者而言,掌握 Linux 查看进程 的核心命令和技巧,不仅能提升问题排查效率,还能更深入理解操作系统的工作原理。

本文将从基础命令到高级技巧,结合实际案例,系统性地讲解如何高效查看和管理 Linux 进程,并通过形象的比喻帮助读者快速理解关键概念。


一、基础命令:进程查看的“三件套”

1.1 ps:进程的静态快照

ps(Process Status)命令用于查看当前进程的状态,可以理解为“系统快照”工具。它能够快速列出进程的 PID(进程标识符)、进程名、CPU/内存占用等信息。

常用参数与示例

ps -ef  

ps  

ps -eo pid,comm,%cpu --sort=-%cpu  

关键参数说明

  • -e:显示所有进程(包括其他用户进程)。
  • -f:显示详细格式(Full Format),包含用户、启动时间等信息。
  • --sort:按指定列排序,- 表示降序。

比喻
ps 命令比作“拍照”,它会冻结当前进程的状态,生成一张静态的“进程照片”。例如,执行 ps -ef 后,你可以看到系统中所有进程的“全家福”。


1.2 top:动态监控进程的“仪表盘”

top 命令是一个实时动态显示进程的工具,类似于汽车仪表盘,能够持续刷新进程的 CPU、内存、IO 等资源占用情况。

基本用法与交互操作

top  

关键功能

  • P 键:按 CPU 使用率排序。
  • M 键:按内存使用率排序。
  • k 键:终止指定 PID 的进程。
  • q 键:退出 top

扩展命令 htop
htoptop 的增强版,提供更直观的交互界面(需额外安装)。例如:

sudo apt-get install htop  

htop  

比喻
top 比作“实时监控摄像头”,而 htop 则是“带触摸屏的高清监控系统”,用户可以通过交互操作快速定位问题进程。


1.3 pgreppkill:按名称精准定位进程

当需要根据进程名称快速查找或终止进程时,pgrep(Process GREP)和 pkill(Process KILL)是高效工具。

示例

pgrep nginx  

pkill firefox  

关键参数

  • -l:显示进程名及 PID。
  • -u <user>:仅显示指定用户的进程。

比喻
pgrep 比作“名字检索系统”,而 pkill 是“远程终止开关”,但需注意:误操作可能导致系统服务中断,因此建议先用 pgrep 确认目标进程。


二、进阶技巧:进程管理的“组合拳”

2.1 组合命令:多条件筛选进程

通过管道符 |grep 等工具,可以实现更复杂的进程筛选。例如:

ps -ef | grep "john" | grep "python"  

ps -eo pid,comm,%mem --sort=-%mem | awk '$3 > 10 {print $0}'  

比喻
psgrep 的组合比作“筛选网”,逐步缩小目标进程的范围,如同在鱼群中精准捕捞特定种类的鱼。


2.2 kill 命令:安全终止进程

kill 命令用于向进程发送信号,默认发送 TERM 信号(终止进程)。但需注意:

  • 不同信号对应不同行为(如 SIGKILL 会强制终止进程)。
  • 终止核心系统进程可能导致系统不稳定。

示例

kill 1234  

kill -9 1234  

2.3 systemctl:服务进程的“管家”

对于以服务形式运行的进程(如 Apache、Nginx),systemctl 是管理其生命周期的首选工具:

systemctl status nginx  

sudo systemctl restart nginx  

比喻
systemctl 比作“服务管家”,它能优雅地启动、停止或重启服务,避免直接杀进程带来的风险。


三、实战案例:通过进程排查内存泄漏

3.1 案例背景

假设开发者发现服务器内存占用异常升高,需快速定位问题进程。

步骤 1:查看内存使用情况

free -h  

输出示例:

               total        used        free      shared  buff/cache   available  
Mem:            7.7G        6.5G         500M         88M        800M        900M  

步骤 2:通过 top 定位高内存进程
执行 top,观察内存占用率最高的进程(假设 PID 为 1234)。

步骤 3:查看进程详细信息

ps -p 1234 -o pid,comm,%mem,cmd  

输出示例:

  PID COMMAND   %MEM CMD  
 1234 myapp    35.2  /usr/bin/myapp --config /etc/myapp.conf  

步骤 4:分析代码或日志
根据进程名 myapp,开发者可检查其代码逻辑或日志文件,定位内存泄漏的根源。


四、最佳实践与注意事项

4.1 安全操作原则

  1. 先查询后操作:用 pspgrep 确认进程信息后再终止。
  2. 避免随意使用 kill -9:优先尝试 TERM 信号(默认 kill 行为)。
  3. 记录操作日志:关键操作前备份配置或记录进程状态。

4.2 性能监控工具推荐

  • vmstat:查看系统整体资源使用(CPU、内存、磁盘等)。
  • dmesg:查看内核日志,辅助排查进程崩溃原因。

结论:掌握进程管理,掌控系统全局

通过本文的学习,开发者能够熟练使用 pstopsystemctl 等工具,结合实际案例理解进程管理的逻辑。Linux 查看进程 不仅是技术操作,更是一种系统性思维的体现——通过观察进程的“生命体征”,开发者可以快速定位问题、优化资源分配,甚至预防潜在风险。

在后续学习中,建议进一步探索 strace(跟踪系统调用)、lsof(查看文件/端口占用)等高级工具,逐步构建完整的系统管理知识体系。记住:进程是 Linux 的“心跳”,读懂它,你就能掌控系统的命脉。

最新发布