Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
简介
linux上进程有以下种状态:
- R 可运行状态:此时进程正在运行或者正在运行队列中等待准备运行
- 等待状态(阻塞状态):此时进程在等待一个事件的发生或某种系统资源。在Linux系统中等待状态又细分为两种等待状态:可中断的等待状态和不可中断的等待状态。
S 可中断的等待状态:处于可中断的等待状态的进程可以被某一信号中断
D 不可中断的等待状态:处于不可中断的等待状态的进程不受信号的打扰,将一直等待事件的发生或等待某种系统资源 - T 暂停状态或跟踪状态:处于暂停状态的进程被暂停运行
- Z 僵死状态:每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源。
- X 退出状态:进程即将被销毁。
ps工具标识进程的5种状态码:
- R:可运行状态
- S:可中断的等待状态
- D:不可中断的等待状态
- T:暂停状态
- Z:僵死状态
ps常用命令
1. ps -aux
如果想查看包含其他使用者的进程,和PID,CPU占有率,记忆体使用情况,运行状态等,可以输入
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 127964 6532 ? Ss 17:13 0:02 /usr/lib/syste
root 2 0.0 0.0 0 0 ? S 17:13 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 17:13 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 17:13 0:00 [kworker/u256:
root 6 0.0 0.0 0 0 ? S 17:13 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 17:13 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 17:13 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 17:13 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 17:13 0:00 [lru-add-drain
...
USER:进程拥有者,示例中是root。
PID:进程ID,用户ID为UID,父进程ID为PPID
%CPU:占用的CPU使用率,ID号为1的进程为0
%MEM:占用的物理内存百分比,ID号为1的进程为0
VSZ:占用的虚拟内存量,ID号为1的进程为194184
RSS:占用的固定的内存量,ID号为1的进程为6536
TTY:终端的次要装置号码(minor device number of tty),示例中的TTY列都是“?”,是表示这些进程不属于任何TTY,因为它们是由系统启动的,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该进程的状态,有下一个板块的几个状态,D,R,S,T,Z是ps指令标识进程的5种状态码
TIME:进程已消耗的CPU时间
CMD:启动进程的命令
2. ps -ef
当前所有的进程。包括显示创建进程的用户标识uid, 进程标识pid, 父进程标识ppid, 创建时间,所执行程序,可以用ps -ef
3. ps lax
ps lax可以提供进程ID,父进程PPID,谦让度和等待的资源
其中
NI:谦让度
WCHAN:正在等待的进程资源
其他参数:
1.-A: 将所有的进程都显示出来,和-e的效果相同,节选如下图:
2.-a: 显示现行终端机下的所有程序,包括其他用户的程序,节选如下图:
3.-u: 以用户为主的格式来显示进程的详细状态,节选如下图:
4.-x: 显示没有控制终端的进程,节选如下图:
5.-r: 只显示正在运行的程序
6.e: 列出程序时,显示出每个程序的环境变量
如果需要查找某一个特定的进程,可以把ps和grep一起用
ps -aux|grep Oracle,查找Oracle的进程
或者在grep后输入进程ID可以查看有关进程,如图: