ps,pstree,top,vmstat用来查看进程或系统负载。下面介绍经常使用的命令组合,或显示内容解释。
程序,进程,线程的关系
程序:拥有某此功能(能被cpu运行的指令),可以被cpu调用运行的文件,通常都放在外部存储设备上。
进程:程序文件被调用运行时,一般都在内存中或cpu正在执行的程序。
线程:把进程中的执行任务的指令分成多个片,而每片可以单独做为一个执行流运行和调用,并且每个片可以分配到不同的cpu核心上运行。可以被单独调用的片称为线程。线程是比进程更小的调度单位。比进程更轻量级。线各可以共享进程的一些资源。
进程的状态
运行态:running,正在运行的进程。
睡眠态:sleeping,睡眠态是进程等待调入cpu运行的进程等待再次被调入cpu运行。分为两种。可中断和不可中断。
可中断睡眠:interruptable,在内核给定的CPU时间片中没有完成计算任务,等待内核继续分配CPU时间片再次运行的进程。
不可中断睡眠:uninterruptable,正在等待外部数据,而外部数据还没有输入完成,这时此进程无法被唤省,直到数据输入完成后才可以被中断。
停止太:stopped,不会再被内核调度和运行。一般需要用户手动唤省。此进程一直占用内存,但不占用cpu。
僵死太:zombie,每个进程都是由父进程创建和中止。父进程如果挂掉,子进程完成任务后无法自动回收,这时为僵死态。这种进程会占用内存。产生僵尸进程是由有问题的程序倒至的。只有重启系统才可以释放其战胜的内存空间。
开始介绍,顺序分别是:ps–>pstree–>pgrep–>pidof–>top–>vmstat
ps 快照式显示进程状态。ps把进程分为两种,与终端相关和与终端无关的。 与终端相关的进程指的是,用户登陆后启动的进,与终端无关则是系统启动时就已经启动的守护进程。ps有两种使用风格,BSD风格和SysV风格,BSD风格使用方法不能用在参数前面加“-”,SysV则需要“-”
bsd风格
a 这个选项用来显示所有与终端相关的进程
x 此选项显示与终端无关的进程
u 以用户为中心来显示。
组合使用
示例:ps aux 以用户为中心显示所有进程
USER:此进程以那个用户身份运行
PID:进程的ID号
%CPU:占用CPU的百分比
%MEN:占用内存的百分比
VSZ:虚拟内存大小。指的是内核分配给此进程线性内存空间中,此进程所占用的空间大小。
RSS:常驻内在集。进程在内核分配线性空间中存储的数据实际都眏射在物理内存中的页面中,这些页面有些可以被转存到交换分区,有些不可以被交换,不可以被交换出去的页面叫做常驻内存级。
TTY:与那个终端相关,?为与终端无关。
STAT:进程运行状态,用R,S,s,D,T,Z,+,l,N
R为运行态
S为可中断睡眠
D为不可中断睡眠
T为停止态
Z为僵死态
s表示为一堆进程的领导者,说明此进程生成了一些子进程,这个进程就会被标记为s。
+表示此进程是一个前台进程,这个进程会占用命令提示符。
l表示此进程是一个多线程进程
N表示此进程为低优先级进程
START:表示启动的时间
TIME:表示运行时长
COMMAND:表示由那个程序启动的进程,用方括号“[]"括起来的表示是一个内核线程。
自定义显示信息-o 后面跟参数。
-o 指定额外的显示信息
pid:进程id
psr:运行在那个cpu
command
pri:优先级
ni:nice值
示例:ps axo pid,psr,command,pri,ni
sysv风格
-e 显示所有进程
-f 显示完整格式
-F 显示额外信息
-H 显示进程的层次结构
组合使用
示例:ps -ef 经完整格式显示所有进程
各段解释
UID:以那个用户身份运行
PID:进程ID
PPID:此进程父进程的PID
C:CPU累计运行时长
STIME:启动时间
TTY:运行在那个终端
TIME:执行累计时长
CMD:由那个程序启动的进程,用方括号“[]"括起来的表示是一个内核线程。
组合2
示例:ps -eFH 以层次结构显示所有进程的额外信息。
UID:以那个用户身份运行
PID:进程ID
PPID:此进程父进程的PID
C:CPU累计运行时长
SZ:进程使用的内存空间
RSS:常驻内在集。实际在内存中的页面数。进程在内核分配线性空间中存储的数据实际都眏射在物理内存中的页面中,这些页面有些可以被转存到交换分区,有些不可以被交换,不可以被交换出去的页面叫做常驻内存级
PSR:进程那个CPU上运行
STIME:启动时间
TTY:运行在那个终端
TIME:执行累计时长
CMD:由那个程序启动的进程,用方括号“[]"括起来的表示是一个内核线程。
pstree 查看进程树 ,每个进程都有那些子进程,其父进程是谁。(如果显示乱码,需要修改字符编码。)
pgrep 过滤显示指定的进程
-U 后面指定uid或用户名,只显示这个用户启动的进程。
-G 仅显示与指定组相关用户启动的进程
-t 仅显示与某个终端相关的进程
-l 显示进程的名字
如: pgrep -lu root 查看以root身份运行的进程
pidof 查看指定进程的相关进程号
示例:pidoff nginx
top 实时显示进程信息,是交互式的工具。默认按占用cpu的百分对进程排序。
top的内部命令
t 显示或不显示进程状态和cpu使用率
l 显示或不显示系统负载信息
1 显示cpu整体负载或每颗cpu的负载,数字1
m 显示或不显示交换内存和物理内存的相关信息
M 以使用的内存百分比排序
P 以CPU使用百分比排序
T 累积占用CPU的时间排序
q 退出top
k 终止指定进程,输入pid就可以kill掉此进程。
s 修改刷新频率,以秒为单位。默认3秒
常用选项
-d 5 :指定刷新频率为5秒,不会太准
-b 批次的方式显示top的刷新,一般打来top的时候排在较下面的进程无法显示,这个选项可以让top把所有的进程一批一批的显示。
-n 5 :指定显示几个批次后退出top
下面是每个监视项的解释
l 显示或不显示系统负载信息
t 显示或不显示进程状态和cpu使用率
进程相关
CPU相关,1 显示cpu整体负载或每颗cpu的负载,数字1。如下
vmstat 命令监控信息很全面
-s 显示内存的统计数据。
后面跟一个数字参数来表示每几秒刷新一次,跟二个参数第二个参数为刷新几次后退出
vmstat 1 表示每一秒刷新一次
vmstat 1 10 表示每一少刷新一次,刷新10次后退出。
vmstat监控内容介绍
进程队例
r:运行队例的长度
b:阻塞进程的队例的长度,阻塞进程一般为等待io完成。
内存信息
swad:从内存转到交换分区的大小,(单位是kb)
free:内存的自由空间
buff:用于缓冲的空间,缓冲般用来加速写操作。
cache:用于缓存的空间,缓存空间一般用来加速读操作。
交换分区信息
si:从内存向交换分区写数据的速率,单位为kb/s.写操作较大说明内存空间小。
so:从交换分区数据向内存写入的速率,单位也是kb/s。
system
in:进程中断的速率,单位kb/s
cs:进程间切换的速率,单位kb/s.
cpu
us:用户空间应用程序使用率
sy:内核空间使用率
id:空闲率
wa:等待io进程使用率
st:虚拟程序占用cpu
监控未完等续!!!!