ps命令、top命令、htop命令及dstat命令

在Linux进程管理中常常需要查看进程的一些状态等信息,而Linux中也提供了许多可以令用户管理的命令。下面就来说一些常用的进程管理命令。

ps命令:

ps命令是Linux中常用并且非常强大的一个查看进程的命令。它可以查看有哪些进程正在运行和其运行状态、进程是否结束、有没有僵死状态、CPU的占用率、内存的占用率等;p常用于监控后台进程的工作情况。

ps命令用法

     ps [option] [--help]

三种风格的选项

   UNIX options, which may be grouped and mustbe preceded by a dash-.表示必须带(-

   BSD options, which may be grouped and mustnot be used with a dash.表示必须不能带(-

   GNU long options, which are preceded by twodashes.长选项格式

常用选项

a:显示所有与终端相关的进程;

-a:显示现在正在执行的进程;

x:显示所有与终端无关的进程;

u:以用户为主显示进程状态信息;

-e:显示所有进程;

-f:显示完整格式的进程信息;

-H:以树状结构显示程序间的关系;

o:可自定义要显示的字段;

示例

ps不加任何选项

[root@localhost~]# ps
   PID TTY          TIME CMD
  2262 pts/0   00:00:00 bash
  3094 pts/0   00:00:00 ps

显示结果中的4个信息的意义:

    PID:运行着的命令(CMD)的进程编号

    TTY:命令所运行的位置(终端)

    TIME:运行着的该命令所占用的CPU处理时间

    CMD:该进程所运行的命令

显示所有与终端相关的进程:

[root@localhost~]# ps a
   PID TTY     STAT   TIME COMMAND
  2230 tty1    Ss+    0:00 /sbin/mingetty/dev/tty1
  2232 tty2    Ss+    0:00 /sbin/mingetty/dev/tty2
  2234 tty3    Ss+    0:00 /sbin/mingetty/dev/tty3
  2236 tty4    Ss+    0:00 /sbin/mingetty/dev/tty4
  2238 tty5    Ss+    0:00 /sbin/mingetty/dev/tty5
  2240 tty6    Ss+    0:00 /sbin/mingetty /dev/tty6
  2262 pts/0   Ss     0:00 -bash
  3226 pts/0   R+     0:00 ps a

显示目前正在执行中的进程

[root@localhost~]# ps -a
   PID TTY          TIME CMD
  3249 pts/0   00:00:00 ps

ax:显示所有进程

例:内容太多只截取部分

[root@localhost~]# ps ax
   PID TTY     STAT   TIME COMMAND
     1 ?       Ss     0:01 /sbin/init
     2 ?       S      0:00 [kthreadd]
     3 ?       S      0:00 [migration/0]
     4 ?       S      0:00 [ksoftirqd/0]
     5 ?       S      0:00 [stopper/0]
     6 ?       S      0:00 [watchdog/0]

常用选型组合:aux

例:

[root@localhost~]# ps aux
USER        PID %CPU %MEM    VSZ  RSS TTY      STAT START   TIME COMMAND
root          1 0.0  0.1  19364      1536 ?        Ss  11:17   0:01 /sbin/init
root          2 0.0  0.0      0        0 ?        S   11:17   0:00 [kthreadd]
root          3 0.0  0.0      0        0 ?       S    11:17   0:00 [migration/0]
root          4 0.0  0.0      0        0 ?       S    11:17   0:00 [ksoftirqd/0]
root          5 0.0  0.0      0        0 ?       S    11:17   0:00 [stopper/0]

显示结果中的各字段的意义:

SUER:用户

PID:进程号

%CPU:该进程占用CPU的百分比;

%MEM:该进程占用物理内存的百分比;

VSZ:该进程虚拟内存的使用量;

RSS:该进程占用固定的内存量

TTY:运行该进程的终端

STAT:该程序目前的状态:

   R:该进程处于运行状态;

   S:该进程处于可中断睡眠状态;

   D:该进程处于不可终止睡眠状态;

   T:该进程正在侦测或者停止;

   Z:该进程处于僵死状态;

   +:前台(运行在终端上的)进程

 l:多线程进程;

 N:低优先级进程;

 <:高优先级进程

 ssession leader 会话主导者

说到这里我们还需要补充一下Linux上进程的5中状态:

1. 运行:正在运行或在运行队列中等待

2. 中断:休眠中, 受阻, 在等待某个条件的形成或接受到信号

3. 不可中断:收到信号不唤醒和不可运行, 进程必须等待直到有中断发生:

4. 僵死:进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放;

5. 停止:进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行

例:ps �Cef

[root@localhost ~]# ps -ef
UID         PID   PPID C STIME TTY          TIME CMD
root          1      0 0 11:17 ?        00:00:01/sbin/init
root          2      0 0 11:17 ?        00:00:00[kthreadd]
root          3      2 0 11:17 ?        00:00:00[migration/0]
root          4      2 0 11:17 ?        00:00:00[ksoftirqd/0]

ps �CefH

[root@localhost ~]# ps -efH
UID         PID   PPID C STIME TTY          TIME CMD
root          2      0 0 11:17 ?        00:00:00[kthreadd]
root          3      2 0 11:17 ?        00:00:00   [migration/0]
root          4      2 0 11:17 ?        00:00:00   [ksoftirqd/0]
root          5      2 0 11:17 ?        00:00:00   [stopper/0]

ps axo 

例如:例只显示进程号和CMD

[root@localhost ~]# ps axo pid,command
   PID COMMAND
     1 /sbin/init
     2 [kthreadd]
     3 [migration/0]
     4 [ksoftirqd/0]
     5 [stopper/0]
     6 [watchdog/0]
     7 [migration/1]


top命令:

能够实时显示系统中各个进程的资源占用状况

用法:

   top [参数]

常用选项

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

-b:以批次方式显示;

-n#:显示多少批次;

 

交互命令:

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

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

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

q:退出;

k:终止指定的进程;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:显示内存和CPU状态信息;

 

示例1:显示进程信息

[root@localhost~]# top
top -18:10:00 up  6:52,  1 user, load average: 0.00, 0.00, 0.00
Tasks:116 total,   1 running, 115sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us, 0.0%sy,  0.0%ni,100.0%id,  0.0%wa, 0.0%hi,  0.0%si,  0.0%st
Mem:   1004768k total,   252256k used,   752512k free,    73708k buffers
Swap:  2097148k total,        0k used,  2097148k free,    59608k cached
 
   PID USER     PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND                                                      
     1 root     20   0 19364 1536 1228 S  0.0 0.2   0:01.44 init                                                          
     2 root     20   0     0   0    0 S 0.0  0.0   0:00.01 kthreadd

显示的前五行为统计信息区,下面来看一下每行信息的具体意义:

第一行为任务队列信息,从左至右依次为:

-18:10:00:当前系统时间;

up  6:52 :系统已经运行了652秒;

1 user:当前有1个用户登录系统;

loadaverage: 0.00, 0.00, 0.00load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况;

第二行为任务进程信息:

目前有116个进程,其中1个正在运行,115个处于睡眠状态,0个停止,0个僵死状态;

第三行为CPU状态信息:

0.0%us:用户占用CPU的百分比;

0.0%sy:内核占用CPU的百分比;

0.0%ni:更改过优先级的进程占用CPU的百分比;

100.0%id:空闲CPU的百分比;

0.0%waIO等待占用CPU的百分比;

0.0%hi:硬中断(HardwareIRQ)占用CPU的百分比;

0.0%si:软中断(SoftwareInterrupts)占用CPU的百分比;

0.0%st:被虚拟化程序偷走的CPU百分比;

第四行为内存状态信息:

1004768ktotal:物理内存总量

252256kused:使用中的内存总量;

752512kfree:空闲内存总量;

73708kbuffers:缓存的内存总量;

第五行为swap交换分区的信息:

2097148ktotal:交换分区总量;

0kused:使用的交换分区总量;

2097148kfree:空闲的交换分区总量;

59608kcached:缓冲的交换分区总量;

 

示例2:以占据CPU百分比排序

[root@localhost~]# top       #p
top -18:23:11 up  7:05,  1 user, load average: 0.00, 0.00, 0.00
Tasks:116 total,   1 running, 115sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us, 0.2%sy,  0.0%ni, 99.7%id,  0.0%wa, 0.0%hi,  0.2%si,  0.0%st
Mem:   1004768k total,   252288k used,   752480k free,    73948k buffers
Swap:  2097148k total,        0k used,  2097148k free,    59616k cached
 
   PID USER     PR  NI  VIRT RES  SHR S %CPU %MEM    TIME+ COMMAND                                                      
  1735 root     20   0 18300  756 476 S  0.3  0.1  0:05.87 irqbalance                                                    
  3516 root     20   0 15032 1220  928 R 0.3  0.1   0:00.04 top                                                           
     1 root     20   0 19364 1536 1228 S  0.0 0.2   0:01.44 init

示例3:显示CPU状态

[root@localhost~]# top        # t
top -18:25:48 up  7:08,  1 user, load average: 0.00, 0.00, 0.00
Mem:   1004768k total,   252132k used,   752636k free,    73972k buffers
Swap:  2097148k total,        0k used,  2097148k free,    59616k cached
 
   PID USER     PR  NI  VIRT RES  SHR S %CPU %MEM    TIME+ COMMAND                                                       
    11 root     20   0     0   0    0 S  0.3 0.0   0:18.64 events/0                                                      
     1 root     20   0 19364 1536 1228 S  0.0 0.2   0:01.44 init

可以看到CPU相关的信息已关闭,想要显示按t即可;


htop命令

htop命令也是用来查看进程的,它和top相似,也可以说是top的高级版;

需要注意的是htop并不是系统自带的,需要自己安装。

常用选项:

-d#:指定延迟时间间隔;

-u Username:仅显示指定用户的进程

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

交互命令:

l :显示选定的进程打开的文件列表;

s:跟踪选定的进程的系统调用;

t:以层级关系显示各进程状态;

a:将选定的进程绑定至某指定的CPU核心;


直接运行htop

wKiom1Z_4a_BuqVoAACus4ONnEk340.png

可以看到最底部的一些选项,可用鼠标直接点击;

查看帮助:F1或直接用鼠标点击Help

wKioL1Z_4efzD4wVAAB_D1qKX0c272.png

htop设置:鼠标点击Setup或者按下F2

wKiom1Z_4f_hBpYIAABWON2XGAk411.png

按下F4,进入过滤器,相当于关键字搜索,不区分大小写,例如过滤dev

wKioL1Z_4jTRi4NpAABBPL0YQB8139.png

PID排序,直接用鼠标点击PID即可:

wKiom1Z_4jfQ2j2yAACqH1zUmOQ122.png


dstat命令

dstat是一款全能的系统监控工具,它可以收集系统的各种信息;在获取信息上类似于topvmstat等,可以说是多个工具的合集。

用法

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

常用选项:

-c--cpu :显示CPU相关信息;

-C##..total :查看指定CPU的信息;

-d ,--disk :显示磁盘的相关信息;

-D sda,sdb .. total:统计指定磁盘的信息;

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

-m:Memory的相关统计数据

-nInterface的相关统计数据;

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

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

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

--top-cpu:显示最占用CPU的进程;

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

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

--top-lantency:延迟最大的进程

 

1:用dstat查看并每2秒刷新一次,3次后退出

[root@localhost~]# dstat 2 3
Youdid not select any stats, using -cdngy by default.
----total-cpu-usage-----dsk/total- -net/total- ---paging-- ---system--
usrsys idl wai hiq siq| read  writ|recv  send|  in  out | int   csw
  0   0100   0  0   0|5627B 1026B|   0    0 |   0     0 | 39    32
  0   0100   0  0   0|   0    0 | 948B  586B|   0    0 |  37    33
  0   0100   0  0   0|   0    0 | 180B  338B|   0    0 |  23    21
  0  0  99   0  0   0|   0    0 |6752B  338B|   0    0 |  80    34

2:找出占用资源最高的进程和用户

[root@localhost~]# dstat --top-mem --top-io --top-cpu
--most-expensive-----most-expensive---- -most-expensive-
  memory process |     i/o process      | cpu process  
tuned       15.0M|bash         16k 120B|kworker/0:0  0.0
tuned       15.0M|irqbalance 8259B    0 |               
tuned       15.0M|sshd: root@ 148B  196B|rcuos/0      0.5
tuned       15.0M|sshd: root@ 162B  212B|               
tuned       15.0M|sshd: root@ 155B  196B|               
tuned       15.0M|sshd: root@ 155B  196B|               
tuned       15.0M|sshd: root@ 155B  196B|kworker/0:0  0.5
tuned       15.0M|sshd: root@ 162B  212B|               
tuned       15.0M|sshd: root@ 155B  196B|tuned        0.5

你可能感兴趣的:(top,PS,dstat,htop)