我们在维护网站,管理后台时,经常遇到的问题比如:网络断开,磁盘剩余空间不足,CPU占用过高等等,针对这些问题事前预防总比事后处理要好。
当系统出现问题时,我们更要能及时准确定位错误的原因,才能针对性地解决问题。
下面搜集一些常用的系统命令及使用方法:
top指令是linux下比较常用的工具,实时显示系统各个进程的PID,资源占用,启动命令等信息,其中重点关注的是平均负载和CPU负载,就像windows的进程管理器一样方便
vm6245:~ # top
top - 10:00:20 up 17 days, 31 min, 1 user, load average: 0.01, 0.02, 0.00
Tasks: 137 total, 2 running, 135 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 97.8%id, 2.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 524460k total, 432288k used, 92172k free, 23556k buffers
Swap: 530104k total, 155356k used, 374748k free, 81212k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14417 root 16 0 5656 1260 888 R 0 0.2 0:00.03 top
1 root 16 0 804 76 40 S 0 0.0 0:00.10 init
2 root RT 0 0 0 0 S 0 0.0 0:00.31 migration/0
3 root 34 19 0 0 0 S 0 0.0 0:00.10 ksoftirqd/0
4 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/0
5 root 11 -5 0 0 0 S 0 0.0 0:00.00 khelper
/*
* top 当前时间 up 系统运行时间 user 当前登录用户数 load average 系统负载(1分钟,5分钟,15分钟)
* Tasks: 进程数 running 正在运行数 sleeping 睡眠进程数 stopped 停止进程数 zombie 僵尸进程数
* Cpu:us用户空间 sy系统空间 id空闲 wa等待IO hi硬件中断 si软件中断 st虚拟线程
* Mem:total物理内存总量 used使用量 free空闲内存 buffers用作内核缓存的内存
* Swap:total交换区总量 used使用量 free空闲量 cached缓冲的交换区
*
* PID USER PR NI VIRT RES
* 进程ID 进程所有者 优先级别 优先级值 虚拟内存 物理内存
*
* SHR S %CPU %MEM TIME+ COMMAND
* 共享内存 进程状态 CPU占用 物理内存占用 使用CPU时间总计 执行命令
*/
vmstat是一个很有用的监控工具,可以查看进程,内存,堵塞IO,CPU等活动
vm6245:~ # vmstat
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 155356 9868 70392 81176 0 0 0 3 9 6 0 0 100 0
/*
* procs memory
* r运行队列中等待的进程数 b等待io进程数 swpd虚拟内存 free空闲内存 buff缓冲区 cache缓存
*
* swap io
* si硬盘交换来的数量 so交换到硬盘的数量 bi向块设备输出的数量 bo接收的块数量
*
* system cpu
* in每秒中断数,包含时钟 cs上下文切换数 us用户时间 sy系统时间 id空闲时间 wa等待IO时间
*/
df和du:df命令可以检查文件系统的磁盘空间占用情况,du可以具体查看某个文件目录所占大小
vm6245:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 3.5G 2.3G 1.3G 64% /
udev 257M 84K 256M 1% /dev
/dev/xvdb 2.7G 2.7G 0 100% /cache/xvdb
vm6245:~ # du -sh *
4.0K S30nsp
51M bin
304K etc
0 htdocs
7.6M include
/*
* df -h
* Filesystem文件系统 Size磁盘大小 Used使用量 Avail空闲空间 Use使用比 Mounted on挂载目录
*
* du -sh * 显示当前目录下所有文件夹和文件所占磁盘大小
*/
iostat可以提供我们丰富的IO状态数据
vm6245:~ # iostat -d -k 1
Linux 2.6.16.60-0.54.5-xen (vm6245) 04/28/12
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.93 0.71 6.93 1050117 10208424
xvdb 0.00 0.02 0.00 33513 0
/*
* Device设备名 tps每秒IO请求次数 kB_read每秒读取数 kB_wrtn每秒写入数 kB_read读取总量 kB_wrtn写入总量
*/