- 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 退出
从磁盘读取到内存的数据在被相关应用程序读取后,如果有剩余内存,则这部分数据会存 入cache,以备第2次读取时,避免重新读取磁盘。当一个应用程序在内存中修改过数据后,因为写入磁盘速度相对较低,在有空闲内存的情况下,这些数据先 存入buffer,在以后某个时间再写入磁盘,从而应用程序可以继续后面的操作,而不必等待这些数据写入磁盘的操作完成。
如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用,这样再次读取cache中的内容时,就需要重新从磁盘读取了。
通过以上分析可以得知,空闲物理内存不多,不一定表示系统运行状态很差
cpu:us用户空间占用百分比;sy内核空间占用的百分比;ni用户进程空间内改变过优先级的进程占用CPU百分比;id空闲CPU百分比;wa等待输入输出的CPU时间百分比
- 统计 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
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:等待所有分组死掉
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制表符分割,美化一下。