- df查看系统磁盘的使用率
-k 以千字节 KB 为单位显示各分区的信息
-a 显示所有分区 包括大小为0 的分区
2、系统的运行状况
/proc/cpuinfo 本机 CPU的相关信息
/proc/meminfo 本机内存及交换分区的使用信息
/proc/modules 本机已安装的硬件模块信息
/proc/mounts 本机已挂载 mount 上的设备信息
3、查看文件或文件夹的大小
du -b /home 以字节为单位显示 /home 文件夹下各个子文件夹的大小
du -ks home 以千字节 KB 为单位显示/home 文件夹的总大小
du -sh * 在某个目录下查看该文件夹占用空间的大小,注意程序运行占用的内存是统计不出来的
df -h 只能宏观的看一下磁盘挂载占用的空间
4、top
执行 top 命令后每隔5 秒系统会自动刷新一次状态信息如果要指定刷新间隔在启动时加入-d 参数即可
top -d 2 每个两秒刷新一次
进入 top 后按下如下按钮会有相应功能
- 空格 立即刷新显示信息
- M 按内存使用量排序
- N 按进程ID 排序
- P 按 CPU使用量排序
- q 退出
当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存 来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,linux会尽量再利用这些空闲内存,以提高整体I/O效率,其方法是把这部 分剩余内存再划分为cache及buffer两部分加以利用。
从磁盘读取到内存的数据在被相关应用程序读取后,如果有剩余内存,则这部分数据会存 入cache,以备第2次读取时,避免重新读取磁盘。当一个应用程序在内存中修改过数据后,因为写入磁盘速度相对较低,在有空闲内存的情况下,这些数据先 存入buffer,在以后某个时间再写入磁盘,从而应用程序可以继续后面的操作,而不必等待这些数据写入磁盘的操作完成。
如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用,这样再次读取cache中的内容时,就需要重新从磁盘读取了。
通过以上分析可以得知,空闲物理内存不多,不一定表示系统运行状态很差
从磁盘读取到内存的数据在被相关应用程序读取后,如果有剩余内存,则这部分数据会存 入cache,以备第2次读取时,避免重新读取磁盘。当一个应用程序在内存中修改过数据后,因为写入磁盘速度相对较低,在有空闲内存的情况下,这些数据先 存入buffer,在以后某个时间再写入磁盘,从而应用程序可以继续后面的操作,而不必等待这些数据写入磁盘的操作完成。
如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用,这样再次读取cache中的内容时,就需要重新从磁盘读取了。
通过以上分析可以得知,空闲物理内存不多,不一定表示系统运行状态很差
zombie代表僵尸进程数目
load average三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
cpu:us用户空间占用百分比;sy内核空间占用的百分比;ni用户进程空间内改变过优先级的进程占用CPU百分比;id空闲CPU百分比;wa等待输入输出的CPU时间百分比
cpu:us用户空间占用百分比;sy内核空间占用的百分比;ni用户进程空间内改变过优先级的进程占用CPU百分比;id空闲CPU百分比;wa等待输入输出的CPU时间百分比
Mem:used 使用的物理内存总量;free 空闲内存总量;buffers 用作内核缓存的内存量;
Swap:used 使用的交换区总量;free 空闲交换区总量;cached缓冲的交换区总量。
进程
NI nice值。负值表示高优先级,正值表示低优先级;
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
PR 优先级
5、last查看近期用户登录的信息,
查看连接数目ps -eLF|grep java|wc -l
6、
当前tcp连接状态统计
- 统计 pid 对应 fd 排序, tcp 连接状态
- lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
- netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 统计 mysql 客户端连接数
- netstat -na |grep 3306 | awk '{print $5}' | sort | uniq -cd
- mysql 慢查询统计
grep Rows_examined test-slow.log | sort -g -k9 -r|uniq -u |head -100
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 14
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18122
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18122
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
这条命令可以把当前系统的网络连接状态分类汇总
/^tcp/ : 滤出tcp开头的记录,屏蔽udp, socket等无关记录。
state[] : 相当于定义了一个名叫state的数组
NF : 表示记录的字段数,如上所示的记录,NF等于6
$NF : 表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT
state[$NF] : 表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数
++state[$NF] : 表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一
END : 表示在最后阶段要执行的命令
for(key in state) :遍历数组
print key,”\t”,state[key] : 打印数组的键和值,中间用\t制表符分割,美化一下。
state[] : 相当于定义了一个名叫state的数组
NF : 表示记录的字段数,如上所示的记录,NF等于6
$NF : 表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT
state[$NF] : 表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数
++state[$NF] : 表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一
END : 表示在最后阶段要执行的命令
for(key in state) :遍历数组
print key,”\t”,state[key] : 打印数组的键和值,中间用\t制表符分割,美化一下。
7、dstat -cdlmny 查看cpu、网络、硬盘、内存的变化情况
dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可以收集指定的性能资源, 譬如 dstat -c 即显示CPU的使用情况.