Linux进程管理
Linux进程管理
进程概念
进程是程序的一次执行实例,是Linux系统资源分配和调度的基本单位。
查看进程
ps命令
# 查看当前用户进程
ps -ef
# 查看详细信息
ps aux
# 查找特定进程
ps aux | grep nginx
# 按CPU使用排序
ps aux --sort=-%cpu | head -10
# 按内存使用排序
ps aux --sort=-%mem | head -10
top命令
# 动态查看进程
top
# 查找特定进程
top -p PID1,PID2
# 只显示特定用户的进程
top -u username
pstree命令
# 显示进程树
pstree
# 显示进程ID
pstree -p
进程控制
启动进程
# 后台运行
command &
# 使用nohup
nohup command &
# 使用screen
screen -S session_name
command
# Ctrl+A, D 分离会话
# screen -r session_name 恢复
停止进程
# 终止进程
kill PID
# 强制终止
kill -9 PID
# 按名称终止
killall process_name
pkill process_name
# 终止用户所有进程
pkill -u username
信号
| 信号 | 编号 | 说明 |
|---|---|---|
| SIGHUP | 1 | 重载配置 |
| SIGINT | 2 | 中断(Ctrl+C) |
| SIGKILL | 9 | 强制终止 |
| SIGTERM | 15 | 正常终止 |
| SIGSTOP | 19 | 暂停 |
| SIGCONT | 18 | 继续 |
进程优先级
# 查看nice值
ps -el | grep nginx
# 启动时设置nice值
nice -n 10 command
# 修改运行中进程的nice值
renice 10 PID
nice值范围:-20(最高优先级)到19(最低优先级)
作业控制
# 查看后台作业
jobs
# 将前台作业放到后台
# Ctrl+Z
bg %1
# 将后台作业调到前台
fg %1
# 挂起/恢复作业
# Ctrl+Z 挂起
# fg 恢复
systemd服务管理
# 启动服务
systemctl start nginx
# 停止服务
systemctl stop nginx
# 重启服务
systemctl restart nginx
# 查看状态
systemctl status nginx
# 开机自启
systemctl enable nginx
# 禁止开机自启
systemctl disable nginx
# 查看所有服务
systemctl list-units --type=service
实践:进程监控脚本
#!/bin/bash
PROCESS="nginx"
MAX_CPU=80
while true; do
CPU=$(ps aux | grep $PROCESS | grep -v grep | awk '{print $3}' | head -1)
if (( $(echo "$CPU > $MAX_CPU" | bc -l) )); then
echo "警告: $PROCESS CPU使用率过高: ${CPU}%"
fi
sleep 5
done
总结
进程管理是系统管理的核心技能。掌握进程的查看、控制和监控,对于系统运维和故障排查至关重要。