Linux 进程管理
学习进程监控、控制和优化,掌握系统性能管理技能
进程概述
进程是 Linux 系统中运行的程序实例。每个进程都有唯一的进程ID(PID), 拥有自己的内存空间和系统资源。有效的进程管理是系统性能优化的关键。
前台进程
直接与用户交互的进程
后台进程
在后台运行的守护进程
系统进程
内核和系统服务进程
查看进程
ps 命令
# 显示当前用户的进程
ps
# 显示所有进程
ps aux
# 显示进程树
ps auxf
# 按CPU使用率排序
ps aux --sort=-%cpu
常用选项: a(所有用户), u(详细信息), x(包括无终端进程)
top 命令 - 实时监控
# 启动top
top
# 常用快捷键:
# q - 退出
# k - 杀死进程
# r - 改变进程优先级
# P - 按CPU排序
# M - 按内存排序
# 1 - 显示所有CPU核心
htop 命令 - 增强版top
# 安装htop
sudo apt install htop # Ubuntu/Debian
sudo yum install htop # CentOS/RHEL
# 运行htop
htop
htop 提供彩色界面、鼠标支持和更直观的操作
进程控制
启动和停止进程
# 后台运行程序
command &
# 将前台进程转到后台
Ctrl+Z # 暂停进程
bg # 后台继续运行
# 将后台进程转到前台
fg
# 查看作业列表
jobs
kill 命令 - 终止进程
# 通过PID杀死进程
kill 1234
# 强制杀死进程
kill -9 1234
kill -KILL 1234
# 通过进程名杀死
killall firefox
pkill firefox
常用信号
TERM (15)
正常终止KILL (9)
强制终止HUP (1)
重新加载配置其他信号
STOP (19)
暂停进程CONT (18)
继续进程USR1 (10)
用户定义进程优先级
nice 和 renice
# 以指定优先级启动程序
nice -n 10 command
# 修改运行中进程的优先级
renice 5 -p 1234
# 查看进程优先级
ps -eo pid,ni,comm
优先级范围: -20(最高优先级)到 19(最低优先级)
nohup 命令
# 让程序在用户退出后继续运行
nohup command &
# 输出重定向到文件
nohup command > output.log 2>&1 &
# 查看nohup输出
tail -f nohup.out
进程故障排除
查找问题进程
# 查找占用CPU最多的进程
ps aux --sort=-%cpu | head -10
# 查找占用内存最多的进程
ps aux --sort=-%mem | head -10
# 查找特定进程
pgrep -f "process_name"
pidof process_name
# 查看进程详细信息
cat /proc/PID/status
僵尸进程处理
# 查找僵尸进程
ps aux | grep defunct
# 查看进程状态
ps -eo pid,ppid,state,comm
# 杀死父进程来清理僵尸进程
kill -TERM parent_pid
系统负载监控
# 查看系统负载
uptime
w
# 查看CPU使用情况
vmstat 1 5
# 查看I/O统计
iostat 1 5
实用脚本示例
进程监控脚本
#!/bin/bash
# 监控特定进程
PROCESS_NAME="nginx"
PID=$(pgrep $PROCESS_NAME)
if [ -z "$PID" ]; then
echo "进程 $PROCESS_NAME 未运行,正在启动..."
systemctl start $PROCESS_NAME
else
echo "进程 $PROCESS_NAME 正在运行,PID: $PID"
fi
资源使用报告脚本
#!/bin/bash
echo "=== 系统资源使用报告 ==="
echo "时间: $(date)"
echo
echo "CPU使用率最高的5个进程:"
ps aux --sort=-%cpu | head -6
echo
echo "内存使用率最高的5个进程:"
ps aux --sort=-%mem | head -6
echo
echo "系统负载:"
uptime