Linux进程管理命令详解 – ps/top/kill/systemctl使用指南

a
admin
作者
2026-07-15
发布日期
约 8 分钟
阅读时间

Linux 进程管理是运维核心技能,服务器出问题第一时间就是看进程状态。

ps:查看进程

最基础的进程查看命令。

# 查看当前会话的进程
ps

# 查看所有进程(标准格式)
ps -e

# 查看所有进程(详细信息,最常用)
ps -ef

# BSD 风格,显示 CPU、内存占用
ps aux

# 查找特定进程
ps -ef | grep nginx

# 按用户过滤
ps -u www-data

# 按名称查找
ps -C nginx

# 显示进程树
ps -ef --forest

实战:找出占用 CPU 最高的 10 个进程:

ps aux --sort=-%cpu | head -11

top:实时进程监控

实时查看系统状态和进程信息,类似 Windows 任务管理器。

# 启动 top
top

# 只看某个用户的进程
top -u www-data

# 只看指定 PID
top -p 1234

进入 top 后的快捷键

| 快捷键 | 作用 |

|——–|——|

| P | 按 CPU 占用排序 |

| M | 按内存占用排序 |

| N | 按 PID 排序 |

| T | 按运行时间排序 |

| 1 | 显示每个 CPU 核心状态 |

| k | 输入 PID 杀进程 |

| q | 退出 |

更现代的替代品htop,界面更友好,支持鼠标操作。

# 安装
apt install htop    # Debian/Ubuntu
yum install htop    # CentOS/RHEL

# 使用
htop

kill:终止进程

# 正常终止(发送 SIGTERM,进程可清理后退出)
kill 1234

# 强制终止(发送 SIGKILL,立即结束)
kill -9 1234

# 发送 SIGTERM(默认信号)
kill -15 1234

# 重启进程(发送 SIGHUP)
kill -HUP 1234

# 按名称杀进程
killall nginx

# 按名称强制杀
killall -9 nginx

# 按名称+完整匹配杀
pkill -f "nginx: worker"

信号说明

| 信号 | 编号 | 作用 |

|——|——|——|

| SIGHUP | 1 | 重启/重载配置 |

| SIGINT | 2 | 中断(Ctrl+C) |

| SIGTERM | 15 | 优雅终止 |

| SIGKILL | 9 | 强制终止 |

建议:先 kill 1234(优雅退出),不行再 kill -9 1234(强杀)。直接 -9 可能丢数据。

systemctl:服务管理

现代 Linux 系统服务管理工具(systemd)。

# 启动服务
systemctl start nginx

# 停止服务
systemctl stop nginx

# 重启服务
systemctl restart nginx

# 重载配置(不中断连接)
systemctl reload nginx

# 查看状态
systemctl status nginx

# 开机自启
systemctl enable nginx

# 禁止开机自启
systemctl disable nginx

# 查看所有已启动的服务
systemctl list-units --type=service --state=running

# 查看启动失败的服务
systemctl --failed

实用组合

# 修改 Nginx 配置后测试并重载
nginx -t && systemctl reload nginx

# 查看服务日志(最近50行)
journalctl -u nginx -n 50

# 实时查看服务日志
journalctl -u nginx -f

jobs / fg / bg:后台任务管理

# 运行命令并放到后台
long_task.sh &
# 输出:[1] 12345([1]是作业号,12345是PID)

# 查看后台任务
jobs
# 输出:[1]+  Running  long_task.sh &

# 把后台任务调到前台
fg %1

# 前台任务放到后台(先 Ctrl+Z 暂停)
bg %1

# 后台任务不受终端关闭影响
nohup long_task.sh &
# 输出会被写到 nohup.out

nohup 用法:服务器跑长任务必备,SSH 断开后任务继续。

# 后台运行并指定日志文件
nohup python3 server.py > /var/log/server.log 2>&1 &

进程资源占用排查

找出占用 CPU 最高的进程

# 方法一:ps
ps aux --sort=-%cpu | head -10

# 方法二:top
top -o %CPU

找出占用内存最高的进程

ps aux --sort=-%mem | head -10

找出占用磁盘 IO 最高的进程

# 安装 iotop
apt install iotop

# 查看磁盘 IO
iotop

查看进程打开的文件

# 查看指定进程打开的文件
lsof -p 1234

# 查看占用 80 端口的进程
lsof -i:80

# 查看某个文件被哪个进程占用
lsof /var/log/nginx/error.log

总结

| 命令 | 作用 | 典型场景 |

|——|——|———|

| ps | 查看进程快照 | 排查问题 |

| top/htop | 实时监控 | 持续观察 |

| kill | 终止进程 | 处理僵死进程 |

| systemctl | 管理服务 | 启停服务 |

| jobs/fg/bg | 后台任务 | 长任务管理 |

| lsof | 查看文件占用 | 排查端口/文件占用 |

服务器出问题时的标准排查流程:top 看整体 → ps 定位进程 → kill 处理异常 → systemctl 重启服务 → journalctl 查日志。

本文到此结束