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:常驻内在集。进程在内核分配线性空间中存储的数据实际都�j射在物理内存中的页面中,这些页面有些可以被转存到交换分区,有些不可以被交换,不可以被交换出去的页面叫做常驻内存级。
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:常驻内在集。实际在内存中的页面数。进程在内核分配线性空间中存储的数据实际都�j射在物理内存中的页面中,这些页面有些可以被转存到交换分区,有些不可以被交换,不可以被交换出去的页面叫做常驻内存级
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。如下
m 显示或不显示交换内存和物理内存的相关信息
进程相关介绍
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
监控未完等续!!!!