ps命令提供进程的一次性查看,结果不是动态的;top对命令实时监控。
1. ps
ps命令只会显示运行在当前控制台下的属于当前用户的进程。
- UNIX风格
| 参数 | 描述 |
|---|---|
| -A | 显示所有进程 |
| -a | 显示除控制进程和终端进程外的所有进程 |
| -d | 显示除控制进程外的所有进程 |
| -e | 显示所有进程 |
| -C cmdlist | 显示包含在cmdlist列表中的进程 |
| -G grplist | 显示组ID在grplist列表中的进程 |
| -U userlist | 显示属主的用户ID在userlist列表中的进程 |
| -p pidlist | 显示PID在pidlist列表中的进程 |
| -f | 显示完整格式的输出 |
| -l | 显示长列表 |
常用的命令: ps -ef:查看系统上运行的所有进程;
ps -l: 产生一个长格式输出
| 参数 | 信息 |
|---|---|
| UID | 启动这些用户的进程 |
| PID | 进程的进程ID |
| PPID | 父进程的进程号 |
| C | 进程生命周期中CPU利用率 |
| STIME | 进程启动时的系统时间 |
| TTY | 进程启动时的终端设备 |
| TIME | 运行进程需要的累计CPU时间 |
| CMD | 启动的程序名称 |
| F | 内核分配给系统的标记 |
| S | 进程的状态(O:正在运行;S: 在休眠;R: 可运行,正等待运行;Z: 僵尸化;T: 停止) |
| PRI | 进程的优先级 |
| NI | 谦让值 |
| ADDR | 进程的内存地址 |
| SZ | 如果进程被换出,所需交换空间的大致大小 |
- BSD风格
Unix和BSD重叠地方很多;
| 参数 | 描述 |
|---|---|
| r | 仅显示运行中的进程 |
| l | 采用长模式 |
| f | 用分层格式显示进程,表明哪些进程启动了哪些进程 |
ps l输出:
重点看这里的参数STAT,它能输出更详细的进程状态码。
第一个参数与UNIX中的S列相同,表明进程是在休眠、运行还是等待。第二个参数进一步说明进程的状态。
| 参数 | 信息 |
|---|---|
| < | 进程运行在高优先级上 |
| N | 进程运行在低优先级上 |
| L | 进程有页面锁定在内存中 |
| s | 进程是控制进程 |
| l | 进程是多线程的 |
- GNU长参数
| 参数 | 描述 |
|---|---|
| –forest | 以层级结构显示出进程和父进程之间的关系 |
ps --forset:
ps常与grep组合,查找特定进程
eg: ps -ef | grep XXX
2. top
实时监测进程:
| 参数 | 信息 |
|---|---|
| VIRT | 进程占用的虚拟内存总量 |
| RES | 进程占用的物理内存的总量 |
| SHR | 进程与其他进程共享的内存总量 |
| S | 进程状态(D: 可中断的休眠状态;R:运行状态;S:休眠;T:跟踪状态或停止状态;Z:僵尸) |
默认情况下,按照%CPU排序。
键入f: 选择对输出进行排序的字段;
键入d: 修改轮询时间;
键入q: 退出top
参考:Linux命令行与shell脚本编程大全