ps
ps (全称:process status)用于显示当前进程的状态,与windows 的任务管理器类似。ps 命令列出的是当前那些进程的快照,就是执行 ps 命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,就必须要了解当前进程的情况,也就是需要查看当前进程。而 ps 命令就是最基本,同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。总之大部分信息都是可以通过执行该命令查看。
进程有5种状态
进程状态 | 含义 | 对应ps命令的状态码 |
运行 | 正在运行或在运行队列中等待 | R 运行 runnable (on run queue) |
中断 | 休眠中, 受阻, 在等待某个条件的形成或接受到信号 | S 中断 sleeping |
不可中断 | 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生 | D 不可中断 uninterruptible sleep (usually IO) |
僵死 | 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放 | Z 僵死 a defunct (”zombie”) process |
停止 | 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行 | T 停止 traced or stopped |
ps命令支持三种语法格式
- Unix风格的参数,前面加单破折线
- BSD风格的参数,前面不加破折线
- GNU风格的长参数,前面加双破折线
语法
ps [options]
- -a 显示同一终端下的所有程序
- -A 显示所有进程
- -u 显示用户
- -x 显示无控制终端的进程
- -e 显示所有用户的进程此参数的效果和指定a参数相同
- -f 用ASCII字符显示树状结构,表达程序间的相互关系
案例
显示指定用户信息
ps -u root
显示所有进程信息,连同命令行
ps -ef
说明:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号(如果该进程是由另一个进程启动的)
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
ps 与 grep 常用组合用法,查找指定进程
ps -ef | grep java
列出目前所有的正在内存当中的程序
ps -aux
说明
- USER: 启动进程的用户
- PID: 进程的ID
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 进程启动时的终端设备
- STAT: 行程的状态
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的进程
- N: 低优先序的进程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 进程开始时间
- TIME: 运行进程需要的累计CPU时间
- COMMAND: 所执行的命令