Linux进程管理
进程基本概念
进程 vs 线程
- 进程: 独立的内存空间,独立的系统资源
- 线程: 共享进程资源,轻量级执行单元
- 联系: 线程是进程内的执行单元,一个进程可包含多个线程
进程状态
# 查看进程状态
ps aux进程状态码
R (Running) - 运行状态
S (Sleeping) - 可中断睡眠状态
D (Disk Sleep) - 不可中断睡眠状态
Z (Zombie) - 僵尸进程
T (Stopped) - 停止状态
进程查看命令
ps命令详解
# 基本格式
ps [选项]
# 常用组合
ps aux # 查看所有进程详细信息
ps -ef # 标准格式显示所有进程
ps -ejH # 显示进程树结构
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu # 自定义输出ps输出字段说明
USER - 进程所有者
PID - 进程ID
PPID - 父进程ID
%CPU - CPU使用率
%MEM - 内存使用率
VSZ - 虚拟内存大小
RSS - 物理内存大小
TTY - 终端类型
STAT - 进程状态
START - 启动时间
TIME - 累计CPU时间
COMMAND - 命令名称
top命令 - 动态监控
top # 交互式进程监控top界面说明
第一行: 系统时间、运行时间、登录用户数、系统负载
第二行: 进程总数、运行状态分布
第三行: CPU使用率 (us用户, sy系统, ni优先级, id空闲, wa等待IO)
第四行: 内存使用情况
第五行: 交换空间使用情况
下方: 进程详细列表
top交互命令
P - 按CPU使用率排序
M - 按内存使用率排序
T - 按累计时间排序
k - 杀死进程
r - 调整进程优先级
q - 退出
htop增强版
htop # 彩色界面,支持鼠标操作进程控制
前台与后台进程
# 后台运行程序
command & # 在后台运行
nohup command & # 忽略挂起信号,长期运行
# 查看后台作业
jobs # 查看当前shell的后台作业
jobs -l # 显示进程ID
# 作业控制
fg %n # 将后台作业调到前台
bg %n # 将停止的作业放到后台运行
Ctrl+Z # 暂停当前前台进程进程终止
# 发送信号
kill [信号] PID # 向进程发送信号
kill -l # 列出所有信号
# 常用信号
SIGTERM (15) # 温和终止,允许进程清理资源
SIGKILL (9) # 强制终止,进程无法捕获或忽略
SIGINT (2) # 中断信号,等同于Ctrl+C
SIGSTOP (19) # 停止进程,等同于Ctrl+Z
# 按名称杀死进程
killall process_name
pkill pattern # 根据模式匹配杀死进程进程优先级
nice值和优先级
# 查看优先级
ps -eo pid,ni,pri,cmd
# nice值范围: -20(最高优先级) 到 +19(最低优先级)
# 普通用户只能设置0-19,root用户可以设置-20-19调整优先级
# 启动时设置nice值
nice -n 10 command # 以nice值10启动程序
# 修改运行中进程的nice值
renice +5 -p PID # 增加nice值(降低优先级)
renice -5 -p PID # 减少nice值(提高优先级)系统负载分析
负载概念
# 查看系统负载
uptime
cat /proc/loadavg负载值含义
- 三个数字分别代表1分钟、5分钟、15分钟的平均负载
- 负载值 = 正在运行进程数 + 等待运行进程数 + 不可中断睡眠进程数
- 理想负载: 小于CPU核心数
CPU使用率分析
# 查看CPU信息
cat /proc/cpuinfo | grep "processor" | wc -l # CPU核心数
# 监控CPU使用率
sar -u 1 10 # 每1秒采样,共10次
iostat -c 1 10 # CPU统计信息内存管理
内存查看
# 查看内存使用
free -h # 人类可读格式
cat /proc/meminfo # 详细内存信息
# 进程内存使用
pmap PID # 查看进程内存映射
smem # 更准确的内存使用统计内存类型
VIRT - 虚拟内存总量
RES - 常驻内存(物理内存)
SHR - 共享内存
%MEM - 物理内存使用率
僵尸进程处理
僵尸进程成因
- 子进程结束,父进程未调用wait()回收
- 父进程异常终止,init进程接管失败
检测和处理
# 查找僵尸进程
ps aux | grep -w Z
# 找到父进程
ps -eo pid,ppid,stat | grep Z
# 解决方法:杀死父进程或重启服务性能监控工具
综合监控工具
vmstat 1 10 # 虚拟内存统计
dstat # 多功能系统资源监控
nmon # AIX/Linux性能分析工具进程追踪
strace -p PID # 跟踪系统调用
ltrace -p PID # 跟踪库函数调用
lsof -p PID # 查看进程打开的文件💡 性能调优建议:
- 定期监控CPU和内存使用率
- 及时处理僵尸进程
- 合理设置进程优先级
- 使用nohup管理长期运行任务
🔗 相关笔记: 02.03_系统管理 02.05_存储与文件系统 11.01_性能优化