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

继续学习

掌握了进程管理后,继续学习更多系统管理技能