网站Logo linux从入门到入土

Linux进程管理完全指南:从入门到实战

admin
12
2022-07-08

Linux进程管理完全指南:从入门到实战

1. 进程基础概念

什么是进程?

运行起来的软件就是进程,即在内存中执行的程序实例。

进程分类

  • 普通进程:常规运行的应用程序
  • 守护进程/服务:持续在后台运行的进程,提供系统服务

2. 特殊进程深度解析

2.1 僵尸进程 ⭐⭐⭐⭐⭐

概述

僵尸进程是指进程因异常原因脱离系统控制,未能正常结束,仍在运行但不受控制,持续占用系统资源的进程。

检测方法

# 方法一:使用top命令查看
top

# 方法二:使用ps命令过滤僵尸进程
ps aux | grep Z
ps aux | awk '$8~/Z/'  # 提取第八列包含Z的行

模拟僵尸进程(用于测试)

# 编译生成测试程序
gcc zombie.c -o zombie

# 前台运行
./zombie

# 后台运行
./zombie &

僵尸进程排查与处理全流程 ⭐⭐⭐⭐⭐

# 1. 检查系统是否存在僵尸进程
top

# 2. 识别具体的僵尸进程及其PID
ps aux | grep Z
ps aux | awk '$8~/Z/'

# 3. 查找僵尸进程的父进程
pstree -p    # 以树状结构显示进程关系,-p参数显示进程ID

# 4. 终止父进程(确保父进程非核心系统进程)
kill 父进程ID

# 5. 验证僵尸进程是否已清除
top

2.2 孤儿进程

定义

当某个子进程的父进程因异常退出,而子进程仍在运行时,该子进程即成为孤儿进程。

影响

孤儿进程对系统影响相对较小,系统会自动接管。

处理方法

  • 事前监控:通过 pstree -pps -ef监控关键服务
  • 事后处理:重启相关服务

3. 进程管理核心技能

3.1 进程终止命令三剑客

命令 功能说明 使用场景
kill 根据进程ID终止进程 kill PID 正常结束
kill -9 PID 强制结束
pkill 根据进程名过滤并终止 快速终止但可能误杀
killall 根据进程名和用户终止 精确终止特定用户的进程

3.2 后台运行管理 ⭐⭐⭐⭐⭐

运行方式对比

  • 前台运行:阻塞当前终端,连接断开即结束
  • 后台运行:不阻塞终端,持续运行

后台运行方法

# 方法一:&符号(连接断开会结束)
命令或脚本 &

# 方法二:nohup(推荐,连接断开不结束)
nohup 命令或脚本 &

实际应用示例

# 后台持续ping测试,输出到默认nohup.out
nohup ping jd.com &

# 查看实时输出
tail -f nohup.out

# 指定输出文件
nohup ping jd.com > /oldboy/ping_jd.log &

4. 进程监控命令详解 ⭐⭐⭐⭐⭐

4.1 ps命令:进程静态信息查看

常用参数对比

  • ps -ef:完整格式显示所有进程
  • ps aux:BSD格式显示所有进程

关键指标解析

# 内存相关指标(单位:KB)
VZS = 物理内存 + 虚拟内存容量
RSS = 实际使用的物理内存

# Swap说明
虚拟内存,在物理内存不足时自动启用

进程状态详解

状态 说明
Z (zombie) 僵尸进程
R (running) 正在运行
S (sleeping) 休眠状态
D 不可中断的休眠(通常等待硬件I/O)
T (stop) 暂停、挂起状态

状态辅助符号

符号 含义
+ 前台运行进程
s 会话管理进程
l 多线程进程

状态组合示例

  • R+:前台运行中
  • S+:前台运行但未占用CPU
  • Ss:会话管理进程休眠中
  • Ssl:多线程会话管理进程休眠中

4.2 top命令:进程动态信息监控

核心快捷键

M    # 按内存使用率排序(核心)
P    # 按CPU使用率排序(核心)
空格  # 立即刷新显示(核心)
1    # 显示所有CPU核心的使用情况(核心)
z    # 切换颜色显示
x    # 高亮显示排序列

替代工具

htop    # 增强版top,功能更强大

5. 实战应用案例

5.1 进程过滤与统计

# 过滤crond和sshd进程
ps -ef | egrep 'crond|sshd'

# 统计crond和sshd进程数量
ps -ef | egrep 'crond|sshd' | grep -v grep | wc -l

# 输出rsyslog进程的PID
ps -ef | grep rsyslog | grep -v grep | awk '{print $2}'

5.2 top命令结果处理

# 将top转为非交互模式进行数据处理
top -bn1    # -b: 批处理模式, -n1: 运行1次

# 提取系统登录用户数量
top -bn1 | awk 'NR==1' | awk '{print $6}'
top -bn1 | awk 'NR==1 {print $6}'

# 提取僵尸进程数量
top -bn1 | awk 'NR==2 {print $(NF-1)}'

6. 核心知识点总结

必须掌握的技能

  1. 僵尸进程处理:检测、识别、解决全流程
  2. 后台运行管理:nohup的正确使用
  3. 进程监控:ps和top的熟练应用
  4. 进程状态解读:理解不同状态的含义

关键概念

  • 进程:运行中的程序实例
  • 线程:进程内的执行单元,如同工厂中的工人
  • 守护进程:持续运行的系统服务进程
动物装饰