notes
notes copied to clipboard
linux top 查看指定程序的资源占用情况 or linux top to a specific process name
场景
经常需要查看系统资源占用情况,这个时候通常都会使用 top 命令。
然而,如何根据进程名称,批量查看特定程序的占用情况,而不是手动一个一个 pid 的粘贴呢?
指令
1. For Linux:
top -p `pgrep xxx | head -n 20 | paste -sd "," -`
2. For MacOS:
top -pid `pgrep xxx | awk 'ORS=" -pid "' | sed 's/.\{6\}$//'`
3. 说明
上述指令的 xxx 替换为你需要查看的进程名称,比如 php, java 等。
head -n 20 是在上一步的结果里只取头20个 pid,因为linux的 top -p 限制最多只能传20个 pid.
TOP 结果说明:

| Name | Description |
|---|---|
| PID | 进程id |
| USER | 进程所有者 |
| PR | 进程优先级 |
| NI | nice值。负值表示高优先级,正值表示低优先级 |
| VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
| RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
| SHR | 共享内存大小,单位kb |
| S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
| %CPU | 上次更新到现在的CPU时间占用百分比 |
| %MEM | 进程使用的物理内存百分比 |
| TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
| COMMAND | 进程名称(命令名/命令行) |
PS: 按 e 可以切换显示单位