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 退出
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 数据写入总量