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
创建子进程,如果子进程退出,而父进程并没有调用wait
或waitpid
获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号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
查看详细信息
lscpu
从sysfs
和/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
、显示端口信息等
安装
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
将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
安装
参数:
-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: 退出命令提示符 文章整理于网络