1. ps 命令

ps 命令可以列出正在运行的的进程,但是不能提供进程随时时间变化的数据。

ps x             显示当前用户运行的所有进程

ps ax           显示系统当前运行的所有进程

ps u            显示详细信息

ps w           显示命令全名

ps m          显示线程

ps -o         定制输出

ps -p <pid> 显示特定进程的信息

root@controller ~]# ps 
  PID TTY          TIME CMD
 1948 pts/0    00:00:00 bash
 2000 pts/0    00:00:00 ps
[root@controller ~]# ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       716  0.0  0.0 110036   844 tty1     Ss+  10:51   0:00 /sbin/agetty --noclear tty1 linux
root      1948  0.0  0.1 115512  2128 pts/0    Ss   11:18   0:00 -bash
root      2003  0.0  0.0 151032  1836 pts/0    R+   11:20   0:00 ps u
[root@controller ~]# ps w
  PID TTY      STAT   TIME COMMAND
  716 tty1     Ss+    0:00 /sbin/agetty --noclear tty1 linux
 1948 pts/0    Ss     0:00 -bash
 2004 pts/0    R+     0:00 ps w
[root@controller ~]# ps w -o pid,tty,stat,time,command,vsz,rss
  PID TT       STAT     TIME COMMAND                        VSZ   RSS
  716 tty1     Ss+  00:00:00 /sbin/agetty --noclear tty1 110036   844
 1948 pts/0    Ss   00:00:00 -bash                       115512  2128
 2017 pts/0    R+   00:00:00 ps w -o pid,tty,stat,time,c 148908  1468
[root@controller ~]# 

[root@controller ~]# ps ax |grep nova
 1004 ?        Ss     0:01 /usr/bin/python /usr/bin/nova-novncproxy --web /usr/share/novnc/
 1007 ?        Ss     0:04 /usr/bin/python /usr/bin/nova-consoleauth
 1009 ?        Ss     0:04 /usr/bin/python /usr/bin/nova-scheduler
 1011 ?        Ss     0:15 /usr/bin/python /usr/bin/nova-api
 1012 ?        Ss     0:04 /usr/bin/python /usr/bin/nova-conductor
 1018 ?        Ss     0:03 /usr/bin/python /usr/bin/nova-cert
 1512 ?        S      0:00 /usr/bin/python /usr/bin/nova-api
 1513 ?        S      0:00 /usr/bin/python /usr/bin/nova-api
 1537 ?        S      0:00 /usr/bin/python /usr/bin/nova-api
 1994 pts/0    R+     0:00 grep --color=auto nova


2. top 命令 

top命令可以提供进程随时间变化的情况,并将系统中活跃的进程显示在上方(默认安装CPU排序)。

top 常用的两个参数 -d <时间间隔> -n <数据刷新次数>

top -p <pid> [ -p <pid>] 显示特定进程

top -u <uid>  显示特定用户的进程

top 的键盘命令

空格键             更新显示

M                     按内存排序

T                      按CPU累计使用排序

P                      按CPU当前使用排序

u                      仅显示某个用户的进程

f                        选择显示不同的统计信息

?                      Help

q                     退出

yarn rest api 资源监控 资源监视器 命令_资源监视

3. lsof 命令

lsof命令列出打开的文件(常规文件、动态库、管道和网络资源等)使用它们的进程。

lsof 输出字段

COMMAND:进程的名称 
PID:    进程ID
USER:   运行进程的用户
FD:     文件描述符 
TYPE:   文件类型
DEVICE: 设备的主要代码和次要代码
SIZE:   文件的大小
NODE:   文件索引节点编号
NAME:   文件名

直接使用lsof输出所有,用more或less显示,更常用的是用命令选项直接过滤输出结果。lsof -h 查看帮助。 

[root@controller ~]# lsof /var/log/nova/nova-api.log
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
nova-api 1011 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-api 1512 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-api 1513 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-api 1537 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
[root@controller ~]# lsof -p 1208
COMMAND  PID  USER   FD   TYPE             DEVICE SIZE/OFF     NODE NAME
mysqld  1208 mysql  cwd    DIR                8,3     4096   653243 /var/lib/mysql
mysqld  1208 mysql  rtd    DIR                8,3     4096      128 /
mysqld  1208 mysql  txt    REG                8,3 17796216 26325011 /usr/libexec/mysqld
mysqld  1208 mysql  mem    REG                8,3    61928 16843995 /usr/lib64/libnss_files-2.17.so
mysqld  1208 mysql  mem    REG                8,3    15688 16851142 /usr/lib64/libkeyutils.so.1.5
mysqld  1208 mysql  mem    REG                8,3    62720 17265243 /usr/lib64/libkrb5support.so.0.1
mysqld  1208 mysql  mem    REG                8,3    68192 16850865 /usr/lib64/libbz2.so.1.0.6
mysqld  1208 mysql  mem    REG                8,3    91496 16850877 /usr/lib64/libelf-0.163.so

[root@controller ~]# lsof +d /var/log/nova
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
nova-novn 1004 nova    3w   REG    8,3    14683 26873972 /var/log/nova/nova-novncproxy.log
nova-cons 1007 nova    3w   REG    8,3     5055 26921623 /var/log/nova/nova-consoleauth.log
nova-sche 1009 nova    3w   REG    8,3    10695 26921620 /var/log/nova/nova-scheduler.log
nova-api  1011 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-cond 1012 nova    3w   REG    8,3     8327 26921622 /var/log/nova/nova-conductor.log
nova-cert 1018 nova    3w   REG    8,3      581 26921576 /var/log/nova/nova-cert.log
nova-api  1512 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-api  1513 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
nova-api  1537 nova    3w   REG    8,3   153478 26873970 /var/log/nova/nova-api.log
[root@controller ~]#

4. strace和ltrace命令

strace跟踪系统调用,ltrace跟踪共享库调用。

strace命令执行片段

root@hbase2:~# strace cat /dev/null
execve("/bin/cat", ["cat", "/dev/null"], [/* 21 vars */]) = 0
brk(0)                                  = 0x1ca2000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8b83b3e000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=161160, ...}) = 0
mmap(NULL, 161160, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8b83b16000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libmac.so.1", O_RDONLY)      = 3



5. /usr/bin/time 

测量cpu时间

oliver@bigdatadev:~$ /usr/bin/time ls /usr/local/hadoop
bin  etc  include  lib	libexec  LICENSE.txt  logs  NOTICE.txt	README.txt  sbin  share  tmp
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 2284maxresident)k
0inputs+0outputs (0major+114minor)pagefaults 0swaps

user:用户时间;system:系统时间;elapsed:消耗的总时间;等待时间=消耗的总时间-系统时间-用户时间

6. renice

top命令的输出PR表示的是进程的优先级-20~20,数字越小优先级越高,这个值可以用renice调整 。

用法 renice <优先级 > <进程ID>

7. 平均负载

平均负载(load average)准备就绪待执行的进程的平均数

uptime 显示三个平均负载和系统运行时间

oliver@bigdatadev:~$ uptime
 13:47:05 up 37 min,  2 users,  load average: 0.00, 0.01, 0.05

平均负载高但系统响应速度不慢,属于正常现象。平均负载高且响应时间慢,可能内存存在问题。可用free命令查看。ps命令可以查看进程的页面错误。

oliver@bigdatadev:~$ jps
3886 DataNode
3765 NameNode
4071 SecondaryNameNode
4242 ResourceManager
4367 NodeManager
4702 Jps
oliver@bigdatadev:~$ ps -o pid,min_flt,maj_flt 3765 4071 4242 4367
  PID  MINFL  MAJFL
 3765  23909      3
 4071  25345      0
 4242  34748      0
 4367  23943      0
oliver@bigdatadev:~$

8.free命令

oliver@bigdatadev:~$ free
             total       used       free     shared    buffers     cached
Mem:       4039084    1295820    2743264      11092     157656     553956
-/+ buffers/cache:     584208    3454876
Swap:      3905532          0    3905532

9.vmstat

监控CPU和内存性能,CPU的繁忙程度、内存换页频率和IO使用情况。

oliver@bigdatadev:~$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2066724 158384 705572    0    0   240    38   88  308  3  2 94  2  0
 0  0      0 2066724 158384 705572    0    0     0    12  173  686  3  2 95  1  0
 0  0      0 2066724 158384 705572    0    0     0     0  172  656  2  1 98  0  0
 1  0      0 2066740 158384 705572    0    0     0    20  172  632  1  1 98  0  0
 0  0      0 2066740 158384 705572    0    0     0     0  177  645  2  1 97  1  0
oliver@bigdatadev:~$

输出字段 

# procs

r: 等待运行的进程数
b: 处在睡眠状态中的进程数
w: 交换出去的可运行进程数
# memory
swap: 虚拟内存使用情况
free: 空闲的内存
buff: 用来作为缓存的内存数
cache: 用来作为缓存的内存数
# swap
si: 从交换区间到内存的交换数
so: 从内存交换到交换区间的交换数
# io
bi: 发送到快设备的块数
bo: 接受块设备传送的块数
# system
in: 每秒的中断数
cs: 每秒的环境切换数
# cpu //按cpu总使用的百分比来显示
us: 用时进程执行时间
sy: 系统进程执行时间
id: 空闲时间
wa: 等待io时间

10. iostat

oliver@bigdatadev:~$ iostat
Linux 3.19.0-25-generic (bigdatadev) 	2016年10月15日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.16    0.32    1.66    1.63    0.00   94.24

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              11.81       210.54        34.61     802356     131908

oliver@bigdatadev:~$

tps 平均每秒数据传输量

KB_read/S 平均每秒数据读取量

KB_wrtn/S 平均每秒数据写入量

kB_read: 数据读入总量

kB_wrtn 数据写入总量