【Linux】搜集的一些故障诊断时常用命令

来源:互联网 发布:巴菲特 知乎 编辑:程序博客网 时间:2024/05/21 17:21

1.Last命令

linux last 命令介绍 

  功能说明:列出目前与过去登入系统的用户相关信息。 

  语  法:last [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...] 

  补充说明:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。 

  参  数:

  -a  把从何处登入系统的主机名称或IP地址,显示在最后一行。

  -d  将IP地址转换成主机名称。

  -f <记录文件 指定记录文件。

  -n <显示列数>-<显示列数 设置列出名单的显示列数。

  -R  不显示登入系统的主机名称或IP地址。

  -x  显示系统关机,重新开机,以及执行等级的改变等信息。 

last 命令:

功能说明:列出目前与过去登入系统的用户相关信息。 

 

2./var/log/message系统报错日志:几乎所有的开机系统发生的错误都会在此记录

  messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

3.lsb_release

-v, --version
显示版本信息
-i, --id
显示发行版的ID
-d, --description
显示该发行版的描述信息
-r, --release
显示当前系统是发行版的具体版本号
-c, --codename
发行版代号
-a, --all
显示上面的所有信息
-h, --help
显示帮助信息

[root@jp ~]# lsb_release -a

LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch

Distributor ID: EnterpriseEnterpriseServer

Description:    Enterprise Linux Enterprise Linux Server release 5.6 (Carthage)

Release:        5.6

Codename:       Carthage

4.df -h

查看各挂载磁盘使用情况

[root@jp lsb-release.d]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              92G   20G   67G  23% /

/dev/sda1             1.9G   42M  1.8G   3% /boot

tmpfs                1014M     0 1014M   0% /dev/shm

5.top命令


top视图 01top视图 01】是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。

第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了12614小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。


load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

 

第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比


在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。

第四行:内存状态
8306544k total — 物理内存总量(8GB
7775876k used — 使用中的内存总量(7.7GB
530668k free — 空闲内存总量(530M
79236k buffers — 缓存的内存量 (79M

 

第五行:swap交换分区
2031608k total — 交换区总量(2GB
2556k used — 使用的交换区总量(2.5M
2029052k free — 空闲交换区总量(2GB
4231276k cached — 缓冲的交换区总量(4GB


这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。 

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linuxfree内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第六行是空行

 

第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kbVIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kbRES=CODE+DATA
SHR — 共享内存大小,单位kb
— 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100
COMMAND — 进程名称(命令名/命令行

6.iostat

iostat

iostat用于输出CPU和磁盘I/O相关的统计信息
命令格式:

iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ]  ]
       [ interval [ count ] ]

1)iostat的 简单使用

1)iostat的 简单使用


iostat可以显示CPUI/O系统的负载情况及分区状态信息

1)iostat的 简单使用



直接执行iostat可以显示下面内容:

# iostat
Linux 2.6.9-8.11.EVAL (ts3-150.ts.cn.tlan)      08/08/2007

avg-cpu:  %user   %nice    %sys %iowait   %idle
             12.01    0.00        2.15    2.30       83.54

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               7.13       200.12        34.73     640119     111076

各个输出项目的含义如下:

avg-cpu:
%user: 在用户级别运行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O,所占用CPU百分比.
%idle: CPU空闲时间的百分比.
Device:
tps: 每秒钟发送到的I/O请求数.
Blk_read /s: 每秒读取的block.
Blk_wrtn/s: 每秒写入的block.
Blk_read:   读入的block总数.
Blk_wrtn:  写入的block总数.

2)iostat参 数说明

iostat各个参数说明:

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

3)iostat输 出项目说明

Blk_read
  读入块的当总数.

              Blk_wrtn
  写入块的总数.

              kB_read/s
  每秒从驱动器读入的数据量,单位为K.

              kB_wrtn/s
  每秒向驱动器写入的数据量,单位为K.

              kB_read
  读入的数据总量,单位为K.

              kB_wrtn
  写入的数据总量,单位为K.

              rrqm/s
  将读入请求合并后,每秒发送到设备的读入请求数.

              wrqm/s
  将写入请求合并后,每秒发送到设备的写入请求数.

              r/s
  每秒发送到设备的读入请求数.

              w/s
  每秒发送到设备的写入请求数.

              rsec/s
  每秒从设备读入的扇区数.

              wsec/s
  每秒向设备写入的扇区数.

              rkB/s
  每秒从设备读入的数据量,单位为K.

              wkB/s
  每秒向设备写入的数据量,单位为K.

              avgrq-sz
  发送到设备的请求的平均大小,单位是扇区.

              avgqu-sz
  发送到设备的请求的平均队列长度.

              await
  I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.

              svctm
  发送到设备的I/O请求的平均执行时间.单位是毫秒.

              %util
  在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
  当这个值接近100%,表示设备带宽已经占满.

4)iostat示 例

#  iostat
 显示一条统计记录,包括所有的CPU和设备.

      # iostat -d 2
 每隔2,显示一次设备统计信息.

      # iostat -d 2 6
 每隔2,显示一次设备统计信息.总共输出6.

      # iostat -x hda hdb 2 6
 每隔2秒显示一次hda,hdb两个设备的扩展统计信息,共输出6.

      # iostat -p sda 2 6
 每隔2秒显示一次sda及上面所有分区的统计信息,共输出6.

7.Vmstat

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

root@ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
1  0      0 3498472 315836 3819540    0    0     0     1    2    0  0  0 100  0

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

root@ubuntu:~# vmstat 2 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
1  0      0 3499840 315836 3819660    0    0     0     1    2    0  0  0 100  0
0  0      0 3499584 315836 3819660    0    0     0     0   88  158  0  0 100  0
0  0      0 3499708 315836 3819660    0    0     0     2   86  162  0  0 100  0
0  0      0 3499708 315836 3819660    0    0     0    10   81  151  0  0 100  0
1  0      0 3499732 315836 3819660    0    0     0     2   83  154  0  0 100  0

这表示vmstat2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。

好了,命令介绍完毕,现在开始实战讲解每个参数的意思。

r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M

buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300M

cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0bibo一般都要接近0,不然就是IO过于频繁,需要调整。

in 每秒CPU的中断次数,包括时间中断

cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apachenginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)

sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 等待IO CPU时间。

grep 命令看某字符串出现多少次,可以用来看报错多少次:

 

grep "CheckResource error for ora.zhdb1.vip" crsd.log|wc -l

17864

 

 grep WARNING ocssd.log

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打混凝土下雨了怎么办 下雨跑马拉松怎么办 儿童坐飞机忘带证件怎么办 我飞机油油超标怎么办 飞机超规格行李怎么办 打蜡后下雨了怎么办 飞机起飞耳朵不舒服怎么办 宝宝脸上口水疹怎么办 婴儿身上长癣怎么办 婴儿下巴口水藓怎么办 婴儿嘴边长癣怎么办 婴儿脸上口水癣怎么办 嘴巴旁边长癣怎么办 美团机票不出票怎么办 东方航空会员锁定怎么办 大众车烧机油怎么办 大众cc烧机油怎么办 叫外卖给差评被打怎么办 发现宿舍被盗后怎么办 知了猴变黑了怎么办 婴儿仙人掌的刺怎么办 仙人掌刺扎进皮肤里怎么办 被仙人掌的小细绒刺扎到怎么办 值机截止了怎么办 社保卡消磁了怎么办 住宾馆没身份证怎么办 社保卡电话错误怎么办 没住过酒店怎么办 上海合规网约车证件怎么办 取票没有身份证怎么办 买车票没有身份证怎么办 登机身份证丢了怎么办 飞机没带身份证怎么办 上飞机没带身份证怎么办 机场没带身份证怎么办 儿童坐飞机没有户口本怎么办 不需要行李托运化妆品怎么办 坐飞机被限制了怎么办 坐飞机没买保险怎么办 飞机起飞时难受怎么办 婴儿坐飞机没座位怎么办