进程状态
在Linux中,进程有五种状态。
- TASK_RUNNING(运行态):正在执行,或者在队列中等待执行。
- TASK_INTERRUPTIBLE(可中断睡眠态):进程被阻塞,等待某些条件的完成。一旦完成这些条件,内核会将进程至为运行态。
- TASK_UNINTERRUPTIBLE(不可中断睡眠态):进程被阻塞,等待某些条件的完成。与可中断睡眠不同的是,该状态的进程不可被信号唤醒。
- TASK_ZOMBIE(僵死态):该进程已经结束,但是该进程的父进程并没有将其回收。
- TASK_STOP(终止态):进程停止执行,通常进程在接受到SIGSTOP、SIGTTIN、SIGTTOU等信号时会进入该状态。
Linux信号
请看下一篇《Linux信号》
PS查看进程的状态
现在我们知道了进程一共有五种状态,而我们也想知道我们启动的进程目前到底是怎样的状态。
可以通过ps命令查看进程的状态。
ps -a
显示当前机器上所有用户的进程。
image.png
ps -A
显示所有的进程,不仅包含用户的进程,还包括系统进程。和-e参数一样
image.png
ps -u
以用户为主的进程。
image.png
ps ax
一般用ps ax列出更加完成的进程信息。
image.png
ps -l
列出较长,较完整的进程信息。
image.png
和ps ax进行对比,多了以下几项,F、S、UID、PPID、C、PRI、NI、ADDR、SZ、WCHAN。
稍后再看看,这都代表什么意思,莫慌。
ps aux 配合管道运算符查看你要查看的进程
image.png不仅仅是PID,还可以grep任何关键字,比如启动进程的命令,比如python等等
image.png
ps命令的缺点
ps命令只能查看进程的瞬时状态,无法进行持续性的监控。Linux提供了另外一个命令top来进行持续性监控。
让我们看看ps命令输出的每列都是什么意思
- USER:用户。
- PID:进程ID。
- %CPU:该进程使用CPU占比。
- %MEM:该进程使用物理内存占比。
- VSZ:该进程使用虚拟内存大小(单位KB)。
- RSS:该进程占用的固定内存量(单位KB)。
- TTY:该进程在哪个终端机上运作,若与终端机无关则显示 ‘?’。
tty1~tty6表示本机上登录者的进程。pst/0等表示通过网络连接到本机的进程。 - STAT:进程的状态。
R,运行态。S,睡眠态。T,终止态。Z,僵死态。 - START:该进程被触发时的启动时间。
- TIME:该进程实际使用CPU时间。
- COMMAND:拉起进程的启动命令。
TOP持续监听进程的状态
top是一个非常牛逼的命令,为什么这么说呢?
因为它不仅可以监听系统中的进程状态,还可以监听系统的负载状态,包括CPU负载、内存负载、各进程所占用的系统资源,并以一定的频率来统计这些信息。
image.png
可以看到这一页的信息量很大啊,我们一行行的来看看,都给我们展示了哪些信息。
第一行:系统信息概览
top - 当前系统时间,系统运行时间,用户数量,CPU在1分钟内cpu负载值,CPU在5分钟内cpu负载值,CPU在15分钟内cpu负载值。
第二行:进程信息概览
Tasks: 进程总数,运行态进程数,睡眠态进程数(包含了可中断和不可中断睡眠态),终止态进程数,僵死态进程数。
第三行:CPU信息概览
%Cpu(s): 用户态下进程占用CPU占比,系统态下进程占用CPU占比,nice值大于的0的进程在用户态下占用CPU时间比,CPU处于idle状态时间比,CPU处于wait状态时间比,处理硬中断时间占比,处理软中断时间占比
第四行:内存信息概览
KiB Mem:物理总内存,可用内存,已使用内存,用作缓冲区的内存数量。
第五行:虚存信息概览
KiB Swap:交换控件总量,空闲交换区,已使用交换区,可用交换区的大小。
下面是进程区详细信息,分别看一下每一列都代表什么吧
- PID:进程号
- USER:拉起进程的用户
- PR:priority缩写,进程优先级。若PR值+100小于100,则该进程为实时进程(real-time),否则为普通进程。
PR值越低,优先级越高,越容易获得CPU的调度。 - NI:nice缩写,表示进程的nice优先级,实时进程的nice值为0,普通进程的nice值范围是-20~19。
- VIRT:进程所占虚拟内存的大小(默认单位KB)。
- RES:进程所占物理内存的大小(默认单位KB)。
- SHR:进程所占共享内存的大小(默认单位KB)。
- S:进程的运行状态。
- %CPU:采样周期内,进程所占CPU百分比。
- %MEM:采样周期内,进程所占内存百分比。
- TIME+: 进程使用CPU时间的总计。
- COMMAND: 拉起进程的命令。
对输出结果排序
默认情况下,top的输出根据cpu的使用率排序。
在执行top命令时,按 shift+O,查看排序项及其快捷键。
image.png在执行top命令时,按 shift+R,反向排序。
监听指定的进程,top -p PID1,PID2, ...
image.png监听特定用户的进程,top -U user_name
比如监听root账号的所有进程。
image.png
也可以在运行top命令时,按 ‘u’快捷键。
image.png
查看所有cpu核的使用情况
默认的top命令给出了CPU的整体使用情况,可以在执行top命令时,按快捷键 ‘1’查看各核的使用情况。
按完了之后,下图中的红框中会列出每个cpu的状况,我只有一个cpu,所以是cpu0.
image.png
网友评论