Shell 进程与系统命令速查
更新时间:2026-08-25。本文覆盖 Shell 编程主题的第⑤族:进程管理与系统信息,约 16 个命令。进程观测的深度方法见本站
tools/cpu/。
一、查看进程
1.1 ps
bash
ps # 当前 shell 的进程
ps aux # 所有进程(BSD 风格,最常用)
ps -ef # 所有进程(System V 风格)
ps aux | grep myapp # 找特定进程
ps -ef --forest # 树状显示父子关系
ps -o pid,ppid,cmd # 自定义列aux 关键列:PID(进程号)、%CPU、%MEM、STAT(状态)、COMMAND。
1.2 pgrep / pidof
bash
pgrep -f nginx # 按命令名/参数找 PID
pgrep -f nginx | wc -l # 数量
pidof nginx # 按进程名找 PID1.3 top
bash
top # 实时进程视图(q 退出)
top -d 2 # 2 秒刷新深度观测:
top的 CPU/内存/负载分析见本站 top 命令详解,mpstat、pidstat在多核定位见 tools/cpu/。
二、信号与终止进程
2.1 kill — 按 PID 发信号
bash
kill PID # 默认 SIGTERM(优雅终止)
kill -9 PID # SIGKILL(强制杀)
kill -l # 列出所有信号常用信号:
| 信号 | 编号 | 作用 |
|---|---|---|
SIGTERM | 15 | 优雅终止(默认) |
SIGKILL | 9 | 强制杀死(不可捕获) |
SIGHUP | 1 | 挂断/重载配置 |
SIGINT | 2 | Ctrl+C 中断 |
SIGSTOP | 19 | 暂停(不可捕获) |
SIGCONT | 18 | 恢复 |
bash
kill -HUP $(pgrep -f nginx) # 重载 nginx 配置2.2 pkill / killall
bash
pkill -f myapp # 按名称/模式杀(比 kill 方便)
pkill -9 -f myapp # 强杀
killall nginx # 按进程名杀全部2.3 kill -STOP / -CONT(暂停/恢复)
bash
kill -STOP PID # 暂停进程(信号 19)
kill -CONT PID # 恢复进程(信号 18)三、前后台与后台运行
3.1 前台/后台切换
bash
command & # 后台运行
jobs # 列出后台任务
fg %1 # 后台任务调到前台
bg %1 # 前台任务放后台
Ctrl+Z # 挂起当前前台任务3.2 nohup — 脱离终端后台运行
bash
nohup command > out.log 2>&1 &nohup:忽略 HUP 信号,终端关闭进程不退出。> out.log:标准输出到文件。2>&1:错误也进同一文件。- 末尾
&:后台运行。
部署场景经典:nohup ./app > app.log 2>&1 & echo $! > app.pid(记录 PID 便于 kill)。
3.3 完整生命周期示例
bash
# 启动并记录 PID
nohup python server.py > server.log 2>&1 &
echo $! > server.pid
# 查看
pgrep -f server.py
# 优雅停止
kill $(cat server.pid)
# 确认
ps aux | grep server.py | grep -v grep四、磁盘与内存
4.1 df — 磁盘空间
bash
df -h # 人类可读的磁盘使用
df -hT # 含文件系统类型
df -h / # 指定挂载点4.2 du — 目录占用
bash
du -sh * # 当前目录各项大小
du -sh dir # 目录总大小
du -h --max-depth=1 dir # 一层一层
du -sh ./* | sort -rh # 按大小倒序找磁盘大户:du -h --max-depth=1 / | sort -rh | head。
4.3 free — 内存
bash
free -h # 人类可读
free -m # MB 单位内存观测详解见本站 内存观测。
五、系统信息
| 命令 | 作用 | 示例 |
|---|---|---|
uptime | 运行时间与负载 | uptime |
uname | 内核信息 | uname -a、uname -r |
hostname | 主机名 | hostname |
whoami | 当前用户 | whoami |
date | 时间日期 | date '+%F %T' |
w | 谁登录 + 负载 | w |
who | 在线用户 | who |
uptime 的负载 | 1/5/15 分钟平均 | 见下方 |
lscpu | CPU 详情 | lscpu |
lsblk | 块设备 | lsblk |
负载解读:uptime 输出的 load average: 1.50, 1.20, 1.10 表示 1/5/15 分钟平均可运行任务数;超过核数说明有排队——分析见 负载与 CPU。
六、与主线衔接
ps/top只是进程管理的入口,深度定位 CPU/内存热点要回到本站 tools/cpu/ 的pidstat/mpstat/perf。nohup+ 日志重定向是守护进程的朴素方案,理解信号(SIGTERM/SIGKILL)衔接本站 信号与崩溃。df/du/free对应磁盘与内存观测主线,见 tools/disk/ 与 tools/memory/。
一句话总结
进程命令核心是 ps aux 找、kill -9 杀、nohup ... & 后台跑、jobs/fg/bg 切换;系统命令用 df -h、du -sh、free -h、uptime 快速掌握磁盘/内存/负载——配合本站观测工具即可从"会管进程"到"会诊性能"。