Linux系统管理中需要监控Linux服务器的性能, Linux本身提供一些很有用的命令和组件, 几乎所有的Linux发行版都装备了大量的监控工具,这些工具通过获取系统状态从而达到衡量系统健康状况, 系统管理员可以使用这些工具来找到导致系统性能问题的原因。本文列出的命令是一些常用的基本命令,用来分析和调试系统状况,比如:
性能瓶颈.
磁盘 (存储) 问题.
CPU和内存的使用.
网络性能.
#1: top – 进程活动状态
“top” 命令提供运行系统的动态实时视图, 比如: 系统进程, 内存、CPU占用. 缺省状态下, top显示按CPU使用的进程, 每隔5秒更新一次.
常用热键
如下为”top”命令常用的热键:
热键 说明
t 显示/关闭概括信息.
m 显示/关闭内存信息.
A 降序显示占用的系统资源,可以很容易识别消耗系统资源多的进程.
f 交互模式配置模式, 可以运行一些特定的任务.
o 允许在top命令窗口交互式选择排序方式 .
r 对指定进程运行 renice 命令.(优先级)
k 对指定进程运行 kill 命令(杀死指定的进程)
z 打开/关闭 彩色/黑白 显示
=> 相关命令: How do I Find Out Linux CPU Utilization?
#2: vmstat – 系统状态,内存,CPU使用状况
“vmstat”命令报告系统进程、内存,页面、以及 block IO, traps, CPU的使用状况.
# vmstat 3
输出:
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 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0
1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0
0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0
0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0
0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0
0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0
0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0显示内存使用情况
# vmstat -m
获取活动/非活动的内存页面状况
# vmstat -a
=> 相关链接: How do I find out Linux Resource utilization to detect system bottlenecks?
#3: w – 查看谁登录到系统,并且在做什么事情
w 命令显示当前登录到系统的用户,以及当前运行的进程/命令.
# w <用户名>
# w root
Sample Outputs:
[root@smtp ~]# w root
12:56:52 up 238 days, 13:52, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.10.3.38 12:56 26.00s 0.01s 0.00s vi /etc/hosts
root pts/1 10.10.3.38 12:56 0.00s 0.01s 0.00s w root
root pts/2 10.10.3.38 12:56 3.00s 0.02s 0.00s top
#4: uptime – 系统运行时间
uptime命令可以查看系统已经运行了多长时间,当前登录的用户,以及过去1分钟,5分钟和15分钟的系统负载。
# uptime
输出:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
#5: ps – 显示系统进程
ps 命令会输出当前进程的报告,要输出所有进程,请使用 -A 或 -e 选项:
# ps -A
输出:
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:02 migration/0
3 ? 00:00:01 ksoftirqd/0
4 ? 00:00:00 watchdog/0
5 ? 00:00:00 migration/1
6 ? 00:00:15 ksoftirqd/1
....
.....
4881 ? 00:53:28 java
4885 tty1 00:00:00 mingetty
4886 tty2 00:00:00 mingetty
4887 tty3 00:00:00 mingetty
4888 tty4 00:00:00 mingetty
4891 tty5 00:00:00 mingetty
4892 tty6 00:00:00 mingetty
4893 ttyS1 00:00:00 agetty
12853 ? 00:00:00 cifsoplockd
12854 ? 00:00:00 cifsdnotifyd
14231 ? 00:10:34 lighttpd
14232 ? 00:00:00 php-cgi
54981 pts/0 00:00:00 vim
55465 ? 00:00:00 php-cgi
55546 ? 00:00:00 bind9-snmp-stat
55704 pts/1 00:00:00 psps is just like top but provides more information.
长格式输出
# ps -Al
超长格式输出:
# ps -AlF
查看线程 ( LWP 和 NLWP)
# ps -AlFH
查看每个进程的线程
# ps -AlLm
查看服务器运行的所有进程
# ps ax
# ps axu
以树状输出进程状态
# ps -ejH
# ps axjf
# pstree
输出安全信息
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM
按特定用户身份查看进程
# ps -U root -u root u
按用户定义的格式输出进程状态
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan
显示某特定的进程ID, 例如:lighttpd
# ps -C lighttpd -o pid=
或者
# pgrep lighttpd
或者
# pgrep -u vivek php-cgi
显示PID 55977的进程名称
# ps -p 55977 -o comm=
找出前10个最多占用系统内存的进程
# ps -auxf | sort -nr -k 4 | head -10
找出前10个最多占用CPU资源的进程
# ps -auxf | sort -nr -k 3 | head -10
#6: free – 内存占用状况
free命令显示系统物理内存、交换空间以及内核buffer的使用状态。
# free
输出:
total used free shared buffers cached
Mem: 12302896 9739664 2563232 0 523124 5154740
-/+ buffers/cache: 4061800 8241096
Swap: 1052248 0 1052248=> 相关命令 :
Linux Find Out Virtual Memory PAGESIZE
Linux Limit CPU Usage Per Process
How much RAM does my Ubuntu / Fedora Linux desktop PC have?
#7: iostat – 平均CPU 负载,磁盘活动状况
iostst命令显示CPU的状态以及设备的输入输出, 分区信息以及NFS的状态.
# iostat
输出:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
avg-cpu: %user %nice %system %iowait %steal %idle
3.50 0.09 0.51 0.03 0.00 95.86
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 22.04 31.88 512.03 16193351 260102868
sda1 0.00 0.00 0.00 2166 180
sda2 22.04 31.87 512.03 16189010 260102688
sda3 0.00 0.00 0.00 1615 0=> 相关链接: : Linux Track NFS Directory / Disk I/O Stats
#8: sar – 查看系统运行状态
sar命令用来收集、报告以及保存系统的活动信息,例如,查看网络计数,输入:
# sar -n DEV | more
显示自24th以来的网络计数:
# sar -n DEV -f /var/log/sa/sa24 | more
使用sar显示实时使用状态:
# sar 4 5