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
:
htop
是 top
的增强版,提供更直观的交互界面(需额外安装)。例如:
sudo apt-get install htop
htop
比喻:
将 top
比作“实时监控摄像头”,而 htop
则是“带触摸屏的高清监控系统”,用户可以通过交互操作快速定位问题进程。
1.3 pgrep
和 pkill
:按名称精准定位进程
当需要根据进程名称快速查找或终止进程时,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}'
比喻:
将 ps
和 grep
的组合比作“筛选网”,逐步缩小目标进程的范围,如同在鱼群中精准捕捞特定种类的鱼。
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 安全操作原则
- 先查询后操作:用
ps
或pgrep
确认进程信息后再终止。 - 避免随意使用
kill -9
:优先尝试TERM
信号(默认kill
行为)。 - 记录操作日志:关键操作前备份配置或记录进程状态。
4.2 性能监控工具推荐
vmstat
:查看系统整体资源使用(CPU、内存、磁盘等)。dmesg
:查看内核日志,辅助排查进程崩溃原因。
结论:掌握进程管理,掌控系统全局
通过本文的学习,开发者能够熟练使用 ps
、top
、systemctl
等工具,结合实际案例理解进程管理的逻辑。Linux 查看进程 不仅是技术操作,更是一种系统性思维的体现——通过观察进程的“生命体征”,开发者可以快速定位问题、优化资源分配,甚至预防潜在风险。
在后续学习中,建议进一步探索 strace
(跟踪系统调用)、lsof
(查看文件/端口占用)等高级工具,逐步构建完整的系统管理知识体系。记住:进程是 Linux 的“心跳”,读懂它,你就能掌控系统的命脉。