ps aux 和 ps -ef
在 Linux/Unix 系统中,ps aux 和 ps -ef 都是用于查看进程信息的命令,结合 grep node 可以筛选出与 Node.js 相关的进程。它们的核心功能相似,但在输出格式和选项含义上有区别:
1. 命令对比
| 命令 | 含义 | 主要区别 |
|---|---|---|
ps aux | BSD 风格语法 | 列更详细(包含 CPU/内存占用) |
ps -ef | UNIX System V 风格语法 | 列更简洁(适合快速查看) |
2. 输出格式差异
ps aux 示例输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
nodeuser 123 1.2 3.1 102344 24500 ? Sl 10:00 0:05 /usr/bin/node app.js
- 包含资源信息:
%CPU(CPU 占用率)、%MEM(内存占用率)、VSZ(虚拟内存)、RSS(物理内存)。 - 适合调试性能问题。
ps -ef 示例输出
UID PID PPID C STIME TTY TIME CMD
nodeuser 123 1 0 10:00 ? 00:00:05 /usr/bin/node app.js
- 包含父子进程关系:
PPID(父进程ID)更清晰。 - 适合查看进程依赖关系。
3. 关键区别总结
| 特性 | ps aux | ps -ef |
|---|---|---|
| 语法风格 | BSD 风格 | UNIX System V 风格 |
| CPU/内存占用 | ✅ 显示 | ❌ 不显示 |
| PPID(父进程ID) | ❌ 不显示 | ✅ 显示 |
| TTY 设备 | ✅ 显示 | ✅ 显示 |
| 命令路径 | ✅ 完整显示 | ✅ 完整显示 |
| 常用场景 | 检查资源占用 | 查看进程关系 |
4. 如何选择?
- 需要分析资源占用(如 Node.js 内存泄漏)→ 用
ps aux | grep node。 - 需要终止进程时 → 两者均可,但
ps -ef的PPID可帮助识别守护进程。 - 跨系统兼容性 →
ps -ef更通用(某些嵌入式 Linux 不支持aux)。
5. 实用技巧
(1) 组合使用 grep 过滤
# 排除 grep 进程自身(避免干扰)
ps aux | grep [n]ode
ps -ef | grep [n]ode
(2) 查看完整命令行
若命令被截断,可指定 ww 选项(仅 BSD 风格支持):
ps auxww | grep node
(3) 按内存/CPU 排序
ps aux --sort=-%mem | grep node # 按内存降序
ps aux --sort=-%cpu | grep node # 按 CPU 降序
6. 为什么 grep node 可能不够?
Node.js 进程的实际命令可能是:
/usr/bin/nodenode server.jsnpm start(实际是 Node 子进程)
更全面的筛选:
ps aux | grep -E 'node|npm'
总结
- 功能相同:两者都能找到 Node.js 进程。
- 细节差异:
aux侧重资源,-ef侧重进程关系。 - 推荐:
- 调试性能 →
ps aux | grep node - 管理进程 →
ps -ef | grep node+pstree -p <PID>(查看树形结构)。
- 调试性能 →
