零基础学会Linux进程管理:查看、终止与后台运行实战
为什么服务器运维必须懂进程管理
进程是Linux系统中正在运行的程序实例,比如Nginx、MySQL、你的Python脚本。进程管理就是查看它们的状态、关闭异常进程或让程序在后台稳定运行。
如果你连进程都不会看,一旦服务器卡顿或网站打不开,根本无从下手。
本文用最直接的方式,带你从零掌握进程查看、终止和后台运行,每一条命令都可在你的服务器上执行。
动手前的准备
你需要一台Linux服务器(CentOS 7/8、Ubuntu 20.04+均可),并通过SSH登录。
如果还没服务器,可以用虚拟机或云服务器。
登录后先更新包管理器的缓存(非必须,但推荐):
# CentOS/Red Hat
sudo yum update -y
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
然后确认系统已安装常用工具:ps、top、kill 通常自带,htop 可装可不装。
你只需在终端输入命令,所有操作都不需要图形界面。
核心实操:查看进程与终止异常进程
1. 查看当前运行的进程
最常用的命令是 ps 和 top。
ps -ef列出所有进程的详细列表,包括PID(进程ID)、父进程、CPU占用等。ps aux类似,但输出格式更易读。top动态刷新进程列表,类似Windows的任务管理器,按q退出。
示例:查找名为 nginx 的进程
ps aux | grep nginx
返回结果中第一列是用户名,第二列是PID,后面是CPU、内存等信息。
你重点关注PID,后面终止进程要用。
2. 终止一个进程
当进程卡死或占用过高时,用 kill PID 发送终止信号。
常用信号:
kill -15 PID:优雅终止(默认),让进程自己清理退出。kill -9 PID:强制终止,用于无法响应-15的情况。
例如杀死PID为1234的进程:
kill -9 1234
如果不知道PID,先用 ps aux | grep 进程名 找到它。
让进程在后台稳定运行
SSH关闭时,前台启动的进程也会被终止。
使用 nohup 和 & 让进程脱离终端运行。
基本用法:
nohup 你的命令 &> /dev/null &
nohup忽略挂断信号(SIGHUP)。&放入后台。&> /dev/null把标准输出和错误输出丢弃(避免生成nohup.out文件)。
示例:运行一个Python爬虫脚本
nohup python3 crawler.py &> /dev/null &
查看后台作业:jobs -l,但仅限当前终端。
更可靠的方式是用 ps 或 ps aux | grep crawler。
避坑指南与效果验证
高频问题与避坑
- 误杀系统进程:不要随意终止PID为1的init/systemd进程,否则服务器会直接挂掉。
- 僵尸进程:子进程已结束但父进程未回收。用
ps aux | grep Z可查看,通常需要重启父进程或重启服务器解决。 - nohup后找不到进程:检查命令路径是否正确,或使用绝对路径。
- top 显示的CPU占用异常高:可能是系统资源紧张或存在挖矿病毒,建议用
htop或strace进一步分析。
验证你的操作是否生效
- 查看进程是否存在:
ps aux | grep 进程名,确认PID是否还在。 - 确认后台进程是否在运行:用
ps -ef | grep nohup或pgrep -a 进程名。 - 测试功能:如果终止的是Web服务器,访问网站是否打不开?如果启动的是任务脚本,检查日志是否正常输出。
最后一个小技巧:把你的常用进程管理命令写到一个脚本里,下次直接复用。
如果你正在学习Linux进程管理,建议先亲手跑一遍本文的所有命令,再结合自己的业务场景多练习。
遇到异常时,优先回看上面的避坑点,大部分问题都能解决。