进程基础概念
什么是进程
进程是程序的一次执行实例,是系统进行资源分配和调度的基本单位。每个进程都有自己的进程ID(PID)和父进程ID(PPID)。
进程状态
状态 | 说明 |
---|---|
R | 运行或就绪 |
S | 可中断睡眠 |
D | 不可中断睡眠 |
Z | 僵尸进程 |
T | 停止或跟踪 |
进程查看命令
1. ps - 查看进程状态
查看所有进程
ps aux
查看进程树
ps auxf
查看特定用户的进程
ps -u username
按CPU使用率排序
ps aux --sort=-%cpu
按内存使用率排序
ps aux --sort=-%mem
2. top - 动态进程监控
基本使用
top
按CPU使用率排序
top -o %CPU
按内存使用率排序
top -o %MEM
只显示特定用户的进程
top -u username
更新间隔设置为3秒
top -d 3
3. htop - 增强版进程监控
启动htop
htop
常用快捷键: - F3 - 搜索进程 - F4 - 过滤进程 - F5 - 进程树视图 - F6 - 排序方式 - F9 - 结束进程
进程控制命令
1. kill - 发送信号给进程
终止进程
kill PID
强制终止进程
kill -9 PID
重新加载配置
kill -HUP PID
列出所有信号
kill -l
2. nice和renice - 调整进程优先级
以较低优先级启动进程
nice -n 10 command
调整运行中进程的优先级
renice -n 10 -p PID
3. nohup - 后台运行进程
后台运行命令
nohup command &
后台运行并重定向输出
nohup command > output.log 2>&1 &
任务管理
1. jobs - 查看后台任务
列出所有后台任务
jobs
显示任务PID
jobs -l
将任务放到前台运行
fg %job_number
将任务放到后台运行
bg %job_number
2. screen - 终端会话管理
创建新会话
screen -S session_name
列出所有会话
screen -ls
重新连接会话
screen -r session_name
分离当前会话
Ctrl + A, D
系统监控
1. vmstat - 系统资源统计
每秒显示一次统计信息
vmstat 1
显示内存统计
vmstat -s
显示磁盘统计
vmstat -d
2. iostat - IO统计信息
显示CPU和IO统计
iostat
每3秒更新一次
iostat 3
显示设备使用率
iostat -d
3. sar - 系统活动报告
CPU使用率报告
sar -u
内存使用报告
sar -r
IO和传输速率报告
sar -b
实用技巧
1. 进程监控脚本
监控特定进程的CPU使用率
while true; do
ps -p PID -o %cpu,%mem,cmd
sleep 5
done
2. 系统负载监控
查看系统负载
uptime
查看进程数量
ps aux | wc -l
查看CPU使用前10的进程
ps aux | sort -rk 3,3 | head -n 10
3. 内存使用分析
查看内存使用情况
free -h
查看进程内存使用详情
pmap PID
清理系统缓存
sync; echo 3 > /proc/sys/vm/drop_caches
注意事项
- 使用kill -9要谨慎,优先使用正常终止信号
- 注意进程的父子关系,避免误杀重要进程
- 定期检查系统负载和资源使用情况
- 合理使用nice值调整进程优先级
- 重要进程考虑使用supervisor等进程管理工具