🔍 一、查看进程
1. ps 命令(静态查看)
- 功能:显示当前进程快照,支持多种筛选和格式化输出。
- 常用选项组合:
ps aux:显示所有用户进程的详细信息(BSD 风格),包括 CPU/内存占用、启动命令等。ps -ef:以完整格式显示进程树(System V 风格),包含父进程 PID(PPID)。ps -eo pid,user,%cpu,%mem --sort=-%mem:按内存占用降序排序,自定义输出列。
- 示例:
ps aux | grep nginx # 过滤包含 "nginx" 的进程 ps -p 1234 -o comm= # 显示 PID 1234 的进程名(无列名)
2. top / htop(动态监控)
- 功能:实时刷新进程状态和资源占用(CPU、内存等)。
- 交互命令:
P:按 CPU 使用率排序,M:按内存使用率排序。k:终止指定 PID 的进程(默认发送SIGTERM)。r:调整进程优先级(输入nice值)。
- 高级用法:
top -d 5 -o %MEM # 每 5 秒刷新,按内存排序 htop -u mysql # 仅显示 mysql 用户的进程(需安装 `htop`)
3. pgrep(快速定位 PID)
- 功能:根据进程名、用户等属性查找 PID。
- 常用选项:
pgrep -l firefox:显示进程名和 PID。pgrep -u root -x sshd:精确匹配 root 用户的sshd进程。
- 示例:
pgrep -f "java -jar app.jar" # 匹配完整命令行
4. pstree(进程树)
- 功能:以树状结构展示父子进程关系,便于排查依赖或僵尸进程。
- 常用选项:
pstree -p:显示 PID。pstree -s 1234:从 PID 1234 向上追溯父进程链。
- 示例:
pstree -p | grep defunct # 查找僵尸进程
⚔️ 二、终止进程
1. kill(按 PID 终止)
- 信号类型:
kill 1234:默认发送SIGTERM(15),允许进程清理后退出。kill -9 1234:发送SIGKILL(9),强制立即终止(无清理机会)
- 步骤:
# 先查 PID,再终止 pid=$(pgrep -x nginx) kill -15 $pid
2. pkill / killall(按名称终止)
- 功能:批量终止同名进程。
- 示例:
pkill -9 firefox # 强制终止所有 firefox 进程] killall -u testuser # 终止 testuser 的所有进程(`killall` 需安装)]
⚙️ 三、进程控制进阶
1. 后台运行与管理
- 启动后台进程:
sleep 60 & # 末尾加 `&` 后台运行,输出作业编号如 [1] 1234 - 管理后台作业:
jobs # 查看后台作业列表 fg %1 # 将作业 1 调回前台 bg %1 # 让暂停的作业 1 在后台继续运行
2. 调整优先级
nice:启动时设置优先级(-20最高,19最低)。nice -n 10 ./script.sh # 以低优先级运行renice:修改运行中进程的优先级。renice -n 5 -p 1234 # 将 PID 1234 的优先级设为 5