ps、top、htop、dstat命令

 

在讲命令之前先简要讲解一下进程的概念性问题。


程的

除了init外,每个程都是由父建,init是女娲创

程可以通fork()建子程,子程需要取的数据可以与父程共用

如果子程要写入自己的数据,父程就把数据复制程一份,这样程就有了自己的数据。

程任完成后就被迹了,就像从没存在


程的切

在一个程运行一段时间后,由于cpu需要运行其他程,程就必把位置出来让给其他程。程运行的当前状,会被放在寄存器中,下次程运行就从寄存器中个状,然后从个状态继续运行。就这样叫做保存现场。但如果在现场来回切,就会浪CPU时间降低系性能。程的相关信息存构体:task struct,多个任的task struct件的tasklist

 

0-139实时优与静相反

100-139:静态优,数字越小,越高,必要

nice:-20到19,分别对应100-139可改变优


程内存

把内存分隔成多个小片段叫做page,每个程按程大小分一些page。内核把些片段page装成一个完整内存,所以程不知道有其他程存在,以自己占据了所有内存。


进程的查看

内核通一个接口/proc,看内核中的状信息,即内核参数,是一个文件系。每个程在/proc目下都一个以程号命令的目。每个目下都记录该进程的详细信息。

内核参数有两类:

置其从而整内核运行特性的参数;可置的都在/proc/sys/

态变量:其用于出内核中统计信息或状信息,用于看;

 

程按启动方式分类

动过程中自:与端无关的程;

过终端启:与端相关的程;如果中断关掉,程也会束。

 

ps命令:- report a snapshot of the current processes.

ps可以看所有程的状,但只是看那一刻的状,不能够刷新。


ps命令的选项有三种格:

1   UNIX options, which may be grouped and mustbe preceded by a dash.须带一个“-”

2   BSD options, which may be grouped and mustnot be used with a dash.决不能“-”

3   GNU long options, which are preceded by two dashes.“--”

 

options选项

a看所有与端相关的程;

[[email protected]]# ps a
   PID TTY     STAT   TIME COMMAND
  1116 tty1    Ss+    0:00 /sbin/agetty --nocleartty1
  2419 pts/0   Ss+    0:02 -bash
  2908 pts/1   Ss     0:01 -bash
  4486 pts/1   R+     0:00 ps a


PID程号

TTY:登端类型

STAT程状

TIME:累占用cpu的时间

COMMAND:由那个命令启的此程,中括号的是内核线

 

x看所有与端无关的程;

 

   [[email protected] proc]#ps x
    PID   TTY       STAT     TIME     COMMAND
     2     ?         S       0:00   [kthreadd]
     3     ?         S       0:09   [ksoftirqd/0]
     5     ?         S<      0:00   [kworker/0:0H]


u看以用户为中心程状信息示;pid号行排序

[[email protected]]# ps u

常用合之一ps aux

[[email protected] proc]# ps aux
USER        PID %CPU %MEM VSZ RSS TTY    STAT START     TIME  COMMAND
root         2  0.0  0.0  0   0  ?       S    12月25   0:00 [kthreadd]
root         3  0.0  0.0  0   0  ?       S    12月25   0:09 [ksoftirqd/0]
root         5  0.0  0.0  0   0  ?       S<   12月25   0:00 [kworker/0:0H]
root         7  0.0  0.0  0   0  ?       S    12月25   0:02 [migration/0]


USER程的属主

PID程的id号

%CPU:累计对cpu的占用百分比

%MEM:占用整个内存空的比率

VSZ:虚内存集,占用虚内存的大小。虚内存是内核把实际占用的内存page装成的一个完整内存,把个虚完整内存提供给进程的,让进程自以自己霸占了整个内存。程占用的虚内存可能包括一些公共内存page,但程并不知道是公共的。些公共内存page不算程占用的实际内存。

RSS: ResidentSize,常内存集。一定不能放到交内存swap中去的程。

TTY:程属主登端类型

STAT: 于的状

R:running,正常运行的状

S:interruptable sleeping,可中断的睡眠状

D:uninterruptable sleeping不可中断的运行状

T:Stopped,停止运行的状

Z:zombie,已僵死的状,等待被清除

+:前台

l:多线

N:低级进

<:高级进

s:session leader,会话领导者。比如shell下运行好多程,个shell就是领导者,若个shell被关,其下的所有程全部会关

START:程启时间

TIME:程累占用cpu的时间

COMMAND:由那个命令启的此程,中括号的是内核线

 

-e示所有

-f示完整格式的程信息

 

常用合之二ps -ef

[[email protected] proc]#ps -ef
UID         PID  PPID    C  STIME  TTY        TIME  CMD
root          2     0    0  12月25  ?      00:00:00 [kthreadd]
root          3     2    0  12月25  ?      00:00:09 [ksoftirqd/0]
root          5     2    0  12月25  ?      00:00:00 [kworker/0:0H]


PPID:指父程的程号

C程占用cpu百分比,0表示太小,近似0

STIME:启动进程的时间

 

-F示更完整格式的程信息;与“-f”相似

-H层级结程的相关信息;

常用合之三-eFH

[[email protected] proc]#ps -eFH
UID         PID  PPID  C    SZ  RSS PSR  STIME   TTY       TIME    CMD
root          2    0   0     0    0   1   12月25  ?      00:00:00  [kthreadd]
root          3    2   0     0    0   0   12月25  ?      00:00:09  [ksoftirqd/0]
root          5    2   0     0    0   0   12月25  ?      00:00:00  [kworker/0:0H]


C程占用cpu百分比,0表示太小,近似0

PSR程运行在哪个cpu上

 

常用合之四-eo axo

o  field1, field2,...:自定示的字段列表,以逗号分隔;

常用的field:pid, ni, priority, psr, pcpu, stat, comm, tty, ppid, rtprio

pcpu:cpu的利用率

ni:nice

priority:,

rtprio:real time priority,实时优

[[email protected] proc]#ps -eo pid,ni,priority
   PID NI PRI   --------------查看进所有程id,nice值和优先级。
     1  0  20
     2  0  20
     3  0  20
[[email protected] proc]#ps axo psr,pcpu,stat
PSR %CPU STAT-------查看所有进程进程运行在哪个cpu,占cpu百分比,运行状态
  0  0.0  Ss
  1  0.0  S
  0  0.0  S

[[email protected] proc]#ps ao comm,tty,ppid,rtprio
COMMAND         TT        PPID   RTPRIO
bash            pts/0      2415     -
bash            pts/1      2904     -
ps              pts/1      2908     -
查看所有与终端相关的进程,以及这些进程的由哪些进程发起,关联的终端类型,进程的父进程号,以及实时优先级。






top命令:- display Linux processes

top命令时显示进程信息的非常重要的工具


下面详细top命令示出的信息代表的意思

[[email protected] ~]#top
top- 18:41:19up 28 min,  2 user, load average: 0.00,0.04, 0.07


18:41:19:指当前系时间;

up28min:了28分;

2 user:当前系有两个用

load average:0.00, 0.04, 0.07:分别在去1分,5,15的在cpu上等待运行的程的平均度,度越,明cpu的力越大,cpu太慢,付不了当前业务需求.度一般不能大于cpu的数量.

uptime命令:也能示上述信息.

 

Tasks: 370total,   1 running, 369 sleeping,   0 stopped,  0 zombie


当前系上任务总数,即一共运行370个程; 1个程正在运行,369个于睡眠状;0于停止(stop)状, 0于僵死(zombie)状.

 

%Cpu(s):  0.1 us, 0.1 sy,  0.0 ni, 99.8 id,  0.1 wa, 0.0 hi,  0.0 si,  0.0 st


程占用百分比

us:user space,.里的所有程占用cpu百分比

sy:system,,内核占用cpu百分比

ni:nice,nice值调整后nice值调整占用的cpu的比率

id:cpu百分比

wa:wait,cpu等待IO设备时间.如果时间长说明IO设备会成性能的瓶

hi:hardwareinterrupt理硬件端所消耗的cpu的百分比

si:softwareinterrupt,中断所消耗的cpu百分比

st:被虚化程序偷走的cpu时间的百分比

KiBMem:  1003184 total,   761088 free,    99096 used,   143000 buff/cache

以KB为单示物理内存的使用情况。

total内存大小;  free:空、可用内存大小;   used:已用内存大小;   buff/cache:用于冲和存的内存空大小,段可以回收的,不算真正被占用

KiBSwap:  2097148 total,  2097148 free,        0 used.   753948 avail Mem

avail Mem:可用空

PID USER   PR NI   VIRT   RES  SHR    S  %CPU %MEM   TIME+   COMMAND                                       
2242 root  20  0  130156  2028  1268  R  0.7  0.2    0:00.84  top                                           
137  root  20  0       0    0    0    S  0.3  0.0    0:01.69  rcu_sched                                     
1    root  20  0  59632   7672  2632  S  0.0  0.8    0:03.13  systemd

   

PR

NI:nice

VIRT:虚内存集

RES:常内存集

SHR:共享内存空

S:当前状  

 

 

排序:默以占用cpu百分比由大到小排序

敲下列大写字母,分别以对应的方式排序

P:以占据CPU百分比排序;

M:以占据内存百分比排序;

T:以累占用CPU时间排序;

 

首部信息看:

l:第一行属于uptime信息:敲l可以示和藏此信息。也可在命令行直接入uptime命令看。

t:第二行和第三行的tasks及cpu信息:可以敲t键查看和

1:按下数字1可以看和藏每个cpu的使用情况

m:第四行和第五行的内存信息:敲m键查看和

 

其它命令:

q:退出命令:按q退出top

s:修改刷新时间间隔。按下s,然后按下数字,即可修改刷新时间间入的数字,秒。例如:按下s,在按数字1,即可实现每秒刷新一次

k止指定的程。按下k---à入要死的程的pid--à按enter--à(选择信号类型,以数字示,默15为杀死)本步可省略à按enter

 

top选项

-d #:指定刷新时间间隔,默认为3秒;

[[email protected]~]# top -d 2 ------打开后就是2秒刷新一次的

-b:以批次方式示;按一屏一屏的刷新示,可以Ctrl+c退出

[[email protected]~]# top –b

-n #示多少批次;

[[email protected]~]# top -n 4 --------------刷新4次就自退出了

[[email protected]~]# top -b -n 3 ----------按批次刷新3次就自退出

 

 


 


 

htop命令:比top更强大、更漂亮的工具,在xshell中支持鼠操作。安装要用epel源

[[email protected] ~]#htop



linux进程管理之ps、top、htop、dstat命令详解


左上方的1,2,3,4分别代表的是哪一cpu的使用情况。Mem,Swp分别是物理内存和交内存的使用情况。

右上方Tasks表示用间进程有35个。thr指线程数量13个。有一个正在运行的程。

uptime:指系了多久

看帮助:用鼠左下角”help“或按F1,可以看帮助。如下

linux进程管理之ps、top、htop、dstat命令详解

Memorybar一行中,绿色的”used“表明绿色的度条表示是已用内存。色的”buffer“表明色的度条是冲部分。橙色的”cache“表明橙色度条代表存部分。

CPU一行中,low-priority指低占用时间;normal正常; kernel内核占用的时间;virtual虚化占用的cpu时间

Status一行中,R,运行状;S,睡眠状;T,停止状;Z,僵死状;D,不可中断睡眠状

u,表示按用户查程。敲一下u,在屏幕左,可以用上下箭标实现选择,按enter确定。

H藏或示右上角thr线程数量。通敲”H“键实现

K:在右上角示或藏内核线程。通敲K键实现。默认为隐

P,M,T:敲大写的P,M,T分别以cpu占用比率,物理内存占用,累占用cpu时间进行排序。

F6:敲F6可以选择按自己需要的字段colume行排序。用上下箭头进选择

a:把一个程限定在某个或某几个cpu上运行,不允其在其他cpu上运行。上下箭,空格键进选择,enter确定。

l看指定程所打开的所有文件。使用上下箭头选择进程,然后敲l键进看。敲ESC退出

s:跟踪一个检查发起的系统调用。程后敲s。ESC退出。

t,F5:以的形式示各程的状

F2置一些示属性。按”F2“,在”setup“列选择Meters,在”left colume“列选择cpu,按enter可行cpu示的界面切,可以切才LED形式或者百分比形式。选择”right colume“列的Tasks counter,按enter可右上角的示界面行切,同也有LED形式和其他形式。中“Availablemeters“列的一些选项,然后按F5,把这项添加的左上角列表示,按F6可添加到右上角列表中示。有其他的选项,可以自行摸索。

 

选项

-d #:指定延迟时间间隔;不指定的是#/10 秒,即0.#秒。看下面例子

[[email protected] ~]#htop -d 2
[[email protected] ~]#htop -d 5   ----------0.5秒刷新一次
[[email protected] ~]#htop -d 20 -------2秒刷新一次
[[email protected] ~]#htop -d 30 ----------3秒刷新一次


-u UserName仅显示指定用程;

[[email protected]~]# htop -u flimmer

-s COLUME:以指定字段行排序;

[[email protected]~]# htop -s PID

 

 

dstat命令:- versatile tool for generating system resource statistics系统资源使用统计的工具

dstat [-afv][options..] [delay [count]]

 

常用选项:dstat 2 5  每两秒刷新一次,5次后退出

 

-c, --cpu:示cpu使用情况;

[[email protected] ~]# dstat -c
----total-cpu-usage----
usr sys   idl  wai  hiq siq
  0   0   99    0    0   0
  0   0   99    0    0   0


-C #,#,...,total示第几号cpu的信息,可以指定多个,用逗号隔开。total表示全部cpu。

linux进程管理之ps、top、htop、dstat命令详解

-d, --disk示磁的相关信息

linux进程管理之ps、top、htop、dstat命令详解

-D sda,sdb,...,或者total,显示指定磁盘设备,多个以逗号隔开

linux进程管理之ps、top、htop、dstat命令详解

-g示page相关的速率数据;

[[email protected] ~]#dstat -g
---paging--
  in   out 
   0    0 
   0    0


-m:Memory的相关统计数据

[[email protected] ~]#dstat -m
------memory-usage-----
 used buff  cach  free
 165M 1084k 89.0M  724M
 165M 1084k 89.0M  724M


-n:Interface的相关统计数据;

[[email protected] ~]#dstat -n
-net/total-
 recv send
   0    0 
7892B  202B
2160B  154B


-p示process的相关统计数据;

[[email protected] ~]#dstat -p
---procs---
run blk new
  0  0 0.2
  0  0   0


-r示io求的相关的统计数据;

[[email protected] ~]#dstat -r
--io/total-
 read writ
0.55  0.19 
   0    0 
   0    0


-s示swapped的相关统计数据;

[[email protected] ~]#dstat -s
----swap---
 used  free
   0  2048M
   0  2048M


--tcp示tcp各接状的数量

[[email protected] ~]#dstat --tcp
----tcp-sockets----
lis act syn timclo
  4  2   0   0   0
  4  2   0   0   0


--udp 示udp状的信息

[[email protected] ~]#dstat --udp
--udp--
lis  act
  5   0
  5   0


--raw裸套接字相关信息

[[email protected] ~]#dstat --raw
raw
raw
  0
  0


--socket示socket状的信息

[[email protected] ~]#dstat --socket
------sockets------
tot tcp udp raw frg
448   4  3   0   0
448   4  3   0   0


--ipc示各通信的相关数据

[[email protected] ~]#dstat --ipc
--sysv-ipc-
msg sem shm
  0  0   0
  0  0   0


--top-cpu示最占用CPU的程;

[[email protected] ~]#dstat --top-cpu
-most-expensive-
  cpu    process  
rcu_sched    0.1
xz            25
xz            25


--top-io:最占用io的程;

[[email protected] ~]#dstat --top-io
----most-expensive----
     i/o process      
bash         27k 1710B
sshd: [email protected] 146B  196B
sshd: [email protected]  78B  168B


--top-mem:查看最占用内存的程;

[[email protected] ~]#dstat --top-mem
--most-expensive-
  memory process 
polkitd     10.0M
polkitd     10.0M
polkitd     10.0M


--top-latency:查看延最大的程;

 [[email protected] ~]# dstat --top-latency
--highest-total--
 latency process 
kblockd/0     201
events/0       42
vmmemctl       95
events/0       82