1、free

显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

  • -b:以Byte为单位显示内存使用情况;
  • -k:以KB为单位显示内存使用情况;
  • -m:以MB为单位显示内存使用情况;
  • -o:不显示缓冲区调节列;
  • -s<间隔秒数>:持续观察内存使用状况;
  • -t:显示内存总和列

2、df

显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  • -a或--all:包含全部的文件系统;
  • --block-size=<区块大小>:以指定的区块大小来显示区块数目;
  • -h或--human-readable:以可读性较高的方式来显示信息;
  • -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
  • -i或--inodes:显示inode的信息;
  • -k或--kilobytes:指定区块大小为1024字节;
  • -l或--local:仅显示本地端的文件系统;
  • -m或--megabytes:指定区块大小为1048576字节;
  • --no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
  • -P或--portability:使用POSIX的输出格式;
  • --sync:在取得磁盘使用信息前,先执行sync指令;
  • -t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
  • -T或--print-type:显示文件系统的类型;
  • -x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息

3、top

实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

  • 选项

  • -b:以批处理模式操作;

  • -c:显示完整的治命令;

  • -d:屏幕刷新间隔时间;

  • -I:忽略失效过程;

  • -s:保密模式;

  • -S:累积模式;

  • -i<时间>:设置间隔时间;

  • -u<用户名>:指定用户名;

  • -p<进程号>:指定进程;

  • -n<次数>:循环显示的次数

  • 交互命令

  • 1:显示具体cpu的状态;

  • “Shift”+“>”和“shift”+“<”:修改进程信息的排序方式;

  • h:显示帮助画面,给出一些简短的命令总结说明;

  • k:终止一个进程;

  • i:忽略闲置和僵死进程,这是一个开关式命令;

  • q:退出程序;

  • r:重新安排一个进程的优先级别;

  • S:切换到累计模式;

  • s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

  • f或者F:从当前显示中添加或者删除项目;

  • o或者O:改变显示项目的顺序;

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

  • m:切换显示内存信息;

  • t:切换显示进程和CPU状态信息;

  • c:切换显示命令名称和完整命令行;

  • M:根据驻留内存大小进行排序;

  • P:根据CPU使用百分比大小进行排序;

  • T:根据时间/累计时间进行排序;

  • w:将当前设置写入~/.toprc文件中

top中一些字段的含义

  • 第一行:
  • 当前的时间
  • 系统累积以及运行的时间
  • 当前登入用户的数量
  • 当前的系统负载
  • 第二行:
  • 进程总数
  • 正常运行的进程数量
  • 休眠的进程总数
  • 停止的进程总数
  • 僵死进程总数

附:zombie僵尸进程
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用waitwaitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait/waitpid来取时才释放。 但这样就导致了问题,如果进程不调用wait/waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。
从系统角度来说,处理僵尸进程有两种方法:
1、找到僵死进程的父进程,kill掉父进程,那么僵死进程将变为孤儿进程,孤儿进程在系统中由init进程接管,init进程将回收僵死进程的资源
2、reboot系统,因为僵死进程是不可以被kill掉

  • 第三行:
    %Cpu(s): 10.6 us, 1.4 sy, 0.0 ni, 87.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
  • us用户进程占用cpu资源的百分比
  • sy内核态进程占cpu资源的百分比(对于硬件的控制,内核来控制)
  • ni用户进程空间内改变过优先级的进程占cpu资源的百分比
  • id空闲cpu的百分比
  • wa等待输入输出(io)的进程占c资源的百分比 (从硬盘加载到内存)
  • hi硬中断(Hardware IRQ)占用cpu的百分比
  • si软中断(Software Interrupts)占用cpu的百分比
  • st虚拟机占用cpu的百分比

进程信息:

  • PR:Priority 进程的优先级
  • NI:Nice Value.优先级的值,负数表示优先级很高,正数表示优先级比较低。
  • VIRT:virtual memory usage 虚拟内存,虚拟内存=物理内存+swap
    1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
    2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
  • RES:resident memory usage 常驻内存
    1、进程当前使用的内存大小,但不包括swap out
    2、包含其他进程的共享
    3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
    4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
  • SHR:shared memory 共享内存
    S — 进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • 1、除了自身进程的共享内存,也包括其他进程的共享内存
  • 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
  • 3、计算某个进程所占的物理内存大小公式:RES – SHR
  • 4、swap out后,它将会降下来
  • DATA
  • 1、数据占用的内存。如果top没有显示,按f键可以显示出来。
  • 2、真正的该程序要求的数据空间,是真正在运行中要使用的。
    早期操作系统不支持多任务
    对于操作系统的多任务,通过cpu时间片来实现处理多任务,目前的cpu主频率可达5.0GHz

4、uptime

打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载,系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

[root@zabbix ~]# uptime
 17:48:22 up  2:28,  2 users,  load average: 0.00, 0.06, 0.07

负载越高,系统越卡,负载值尽量不要超过cpu核数的两倍以上

5、lscpu

显示cpu的相关信息,也可以通过cat /proc/cpuinfo查看详细信息
lscpusysfs/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读
命令输出的信息包含cpu数量,线程,核数,套接字和Nom-Uniform Memeor Access(NUMA),缓存等
显示格式:

  • Architecture: #架构
  • CPU(s): #逻辑cpu颗数
  • Thread(s) per core: #每个核心线程
  • Core(s) per socket: #每个cpu插槽核数/每颗物理cpu核数
  • CPU socket(s): #cpu插槽数
  • Vendor ID: #cpu厂商ID
  • CPU family: #cpu系列
  • Model: #型号
  • Stepping: #步进
  • CPU MHz: #cpu主频
  • Virtualization: #cpu支持的虚拟化技术
  • L1d cache: #一级缓存(google了下,这具体表示表示cpu的L1数据缓存)
  • L1i cache: #一级缓存(具体为L1指令缓存)
  • L2 cache: #二级缓存

6、iftop

iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等
安装

yum install iftop -y

6.1、iftop界面相关说明


界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。

  • TX:发送流量
  • RX:接收流量
  • TOTAL:总流量
  • Cumm:运行iftop到目前时间的总流量
  • peak:流量峰值
  • rates:分别表示过去 2s 10s 40s 的平均流量

6.2、iftop界面相关参数

常用的参数

  • -i设定监测的网卡,如:# iftop -i eth1
  • -B 以bytes为单位显示流量(默认是bits),如:# iftop -B
  • -n使host信息默认直接都显示IP,如:# iftop -n
  • -N使端口信息默认直接都显示端口号,如: # iftop -N
  • -F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
  • -h(display this message),帮助,显示参数信息
  • -p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
  • -b使流量图形条默认就显示;
  • -f过滤计算包用;
  • -P使host信息及端口信息默认就都显示;
  • -m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)

  • 按h切换是否显示帮助;
  • 按n切换显示本机的IP或主机名;
  • 按s切换是否显示本机的host信息;
  • 按d切换是否显示远端目标主机的host信息;
  • 按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
  • 按N切换显示端口号或端口服务名称;
  • 按S切换是否显示本机的端口信息;
  • 按D切换是否显示远端目标主机的端口信息;
  • 按p切换是否显示端口信息;
  • 按P切换暂停/继续显示;
  • 按b切换是否显示平均流量图形条;
  • 按B切换计算2秒或10秒或40秒内的平均流量;
  • 按T切换是否显示每个连接的总流量;
  • 按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
  • 按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
  • 按j或按k可以向上或向下滚动屏幕显示的连接记录;
  • 按1或2或3可以根据右侧显示的三列流量数据进行排序;
  • 按<根据左边的本机名或IP排序;
  • 按>根据远端目标主机的主机名或IP排序;
  • 按o切换是否固定只显示当前的连接;
  • 按f可以编辑过滤代码
  • 按!可以使用shell命令
  • 按q退出监控

7、iostat

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
安装

yum install sysstat -y 

参数:

  • -c 仅显示CPU统计信息.与-d选项互斥.
  • -d 仅显示磁盘统计信息.与-c选项互斥.
  • -k 以K为单位显示每秒的磁盘请求数,默认单位块.
  • -p device | ALL
    与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:# iostat -p hda或显示所有设备# iostat -p ALL
  • -t 在输出数据时,打印搜集数据的时间.
  • -V 打印版本号和帮助信息.
  • -x 输出扩展信息


第一部分包含了CPU报告

  • %user : 显示了在执行用户(应用)层时的CPU利用率
  • %nice : 显示了在以nice优先级运行用户层的CPU利用率
  • %system : 显示了在执行系统(内核)层时的CPU利用率
  • %iowait : 显示了CPU在I/O请求挂起时空闲时间的百分比
  • %steal : 显示了当hypervisor正服务于另外一个虚拟处理器时无意识地等待虚拟CPU所占有的时间百分比。
  • %idle : 显示了CPU在I/O没有挂起请求时空闲时间的百分比

第二部分包含了设备利用率报告

  • Device : 列出的/dev 目录下的设备/分区名称
  • tps : 显示每秒传输给设备的数量。更高的tps意味着处理器更忙。
  • KB_read/s : 显示了每秒从设备上读取的块的数量(KB,MB)
  • KB_wrtn/s : 显示了每秒写入设备上块的数量(KB,MB)
  • KB_read : 显示所有已读取的块
  • KB_wrtn : 显示所有已写入的块

8、vmstat

显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

  • -a:显示活动内页;
  • -f:显示启动后创建的进程总数;
  • -m:显示slab信息;
  • -n:头信息仅显示一次;
  • -s:以表格方式显示事件计数器和内存状态;
  • -d:报告磁盘状态;
  • -p:显示指定的硬盘分区状态;
  • -S:输出信息的单位。

字段说明:
Procs(进程)

  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
  • b: 等待IO的进程数量。

Memory(内存)

  • swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
  • free: 空闲物理内存大小。
  • buff: 用作缓冲的内存大小。
  • cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

  • si: 每秒从交换区写到内存的大小,由磁盘调入内存。
  • so: 每秒写入交换区的内存大小,由内存调入磁盘。

注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

  • IO(现在的Linux版本块的大小为1kb)
  • bi: 每秒读取的块数
  • bo: 每秒写入的块数
    注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

  • in: 每秒中断数,包括时钟中断。
  • cs: 每秒上下文切换数。
    注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

  • us: 用户进程执行时间百分比(user time)
    us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
  • sy: 内核系统进程执行时间百分比(system time)
    sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
  • wa: IO等待时间百分比
    wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
  • id: 空闲时间百分比

9、dmidecode

获取有关硬件方面的信息。dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等
参数:

  • -d:(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。
  • -h:显示帮助信息。
  • -s:只显示指定DMI字符串的信息。(string)
  • -t:只显示指定条目的信息。(type)
  • -u:显示未解码的原始条目内容。
  • --dump-bin file:将DMI数据转储到一个二进制文件中。
  • --from-dump FILE:从一个二进制文件读取DMI数据。

dmidecode的输出格式:
其中的前三行都称为记录头(recode header),其中包括了:

  • 1.recode id(Handle):DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0x0002.
  • 2.DMI type id:记录的类型,譬如说:BIOS,Memory,上例是type 2,即“Base Board Information”.
  • 3.recode size:DMI表中对应记录的大小,上例为95 bytes。(不包括文本信息,所有实际输出的内容比这个size要更大)。记录头之后就是记录的值。
  • 4.recoded values:记录值可以是多行的,比如上例显示了主板的制造商(Manufacturer)、Product Name、Version以及Serial Number。

示例:

  • 查看服务器型号:dmidecode | grep 'Product Name'
  • 查看主板的序列号:dmidecode |grep 'Serial Number'
  • 查看系统序列号:dmidecode -s system-serial-number
  • 查看内存信息:dmidecode -t memory
  • 查看OEM信息:dmidecode -t 11
  • 取出内存信息Size
awk '/Size/{print $(NF-1)}' a.txt|sort -n|uniq -c|awk '{print $1"*"$2}'|xargs -n 100|tr ' ' '+'

10、nethogs

按进程或程序实时统计网络带宽使用率

yum install nethogs -y
nethogs -d 5			#设置5秒钟的刷新频率
nethogs eth0			#监视设备(eth0)的网络带宽
nethogs eth0 eth1	#同时监视eth0和eth1接口

交互命令

  • m: 修改单位
  • r: 按流量排序
  • s: 按发送流量排序
  • q: 退出命令提示符

文章整理于网络