暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Centos7中查询服务器的硬件信息

Java Miraculous 2021-08-03
6361
在排查线上问题的时候,除了看日志以外,对服务器各项指标的监控也非常重要,比如CPU和内存,当然,还有很多其它的硬件信息,那我们怎么通过命令去查看这些信息呢?
  • 一、查看操作系统相关信息

  • 1.1、uname命令

  • 显示全部信息:

uname -a

Linux:操作系统名称
bogon:计算机名
3.10.0-1160.el7.x86_64:内核版本号以及计算机类型
#1 SMP Mon Oct 19 16:18:59 UTC 2020:内核版本与发行时间
除了显示全部信息外,我们也可以分别查询上面的单个信息:
  • 显示计算机类型,系统是多少位

uname -m

:I386--I686 都是32位,x86_64 是 64位
  • 显示计算机名:

uname -n

  • 显示内核版本号:

uname -r

  • 显示操作系统名称:

uname -s

  • 内核版本的发行时间:

uname -v

  • 1.2、查看Linux系统版本

cat etc/centos-release

  • 1.3、查看Linux系统的位数

除了1.1中的uname -r,还可以利用以下命令:

getconf LONG_BIT

注:32位的系统中long类型是4字节,64位的系统中long类型是8字节

  • 二、查看CPU相关信息

  • 查看CPU的详细信息:

cat proc/cpuinfo

processor:系统中逻辑处理核的编号,对于单核处理器,则认为是其CPU编号,对于多核处理器则可以是物理核,或者使用超线程技术虚拟的逻辑核
vendor_id:CPU制造商
cpu family:CPU产品系列代号
model:CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping:CPU属于制作更新版本
microcode:微码
cpu MHz:CPU的实际使用主频
cache size:CPU二级缓存大小
physical id:单个CPU的标号
siblings:单个CPU逻辑物理核数
core id:当前物理核在其所处CPU中的编号,该编号不一定连续
cpu cores:该逻辑核所处CPU的物理核数
apicid:用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu:是否具有浮点运算单元
fpu_exception:是否支持浮点计算异常
cpuid level:执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp(Write Protection):表明当前CPU是否在内核态支持对用户空间的写保护
flags:当前CPU支持的功能
bogomips(Million Instructions Per Second):在系统内核启动时粗略测算的CPU速度
clflush size:每次刷新缓存的大小单位
cache_alignment:缓存地址对齐单位
address sizes:可访问地址空间位数
power management:电源管理
上面提到了物理核和逻辑核,这里解释下:
CPU(Central Processing Unit):中央处理单元
物理CPU:就是你电脑主板上插的CPU
物理CPU个数:就是你电脑主板上插的CPU个数,插一个数量是1,插两个数量就是2,眼睛看的见得

注:physical id就是每个物理CPU的id,有几个不同的physical id就有几个物理CPU

  • 查看物理CPU的个数:

cat proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

物理CPU内核:每个物理CPU有至少1个物理内核,就是我们平时买电脑时说的几核

注:core id就是每颗物理CPU的物理内核id,有几个不同的core id就有几个物理内核,你电脑的总CPU物理内核数=物理CPU_1*物理CPU_1的内核数+...+物理CPU_n*物理CPU_n的内核数

  • 查看物理CPU核数:

cat proc/cpuinfo | grep "cpu cores" | uniq

逻辑CPU:很早以前CPU没有多核,一个物理CPU只有1个物理内核,现在有了多核技术,一个物理CPU可以有多个物理内核,相当于把一个CPU当成多个CPU来用,为了和物理CPU区分开来,物理内核又叫做逻辑CPU,在从没有开启超线程时,逻辑CPU的个数就是总的CPU物理内核数,开启超线程后,逻辑CPU的个数就是总的CPU物理内核数*2。

注:processor就是逻辑CPU,有几个processor就有几个逻辑CPU,比如我的linux虚拟机的processor有0、1,所以就有2个逻辑CPU

  • 查看逻辑CPU的个数:

cat proc/cpuinfo |grep "processor"|wc -l

  • 查看每个物理CPU中逻辑CPU的个数:

cat /proc/cpuinfo | grep 'siblings' | uniq

  • 查看CPU是否启用超线程:

cat /proc/cpuinfo | grep -e "cpu cores" -e "siblings" | sort | uniq

可以看到cpu cores数量和siblings一样,说明没有启用,如果,启用的话cpu cores应该是siblings的一半。

注:平时我们经常会问运维分配的机器是几核几线程的,如果你的机器有1个物理CPU,这个CPU是双核的,并且支持超线程,那这台机器就是双核四线程,不支持超线程的话就是双核双线程,这个线程数其实就是上面介绍的逻辑CPU的个数

  • 三、用top查看CPU负载和内存使用情况

top

可以看到一共有6行信息(PID以下的数据算做PID这一行),接下来看下这6行信息都代表什么?
  • 3.1、第1行:top

02:59:29:系统的当前时间
4:14:系统到目前已运行的时间
users:当前系统登录的用户数量
load average: 0.04, 0.04, 0.05:最近1分钟、5分钟、15分钟CPU的平均负载

注:load average这个参数很重要,根据它能判断CPU的负载是否过重,所谓CPU负载指的是一段时间内共有多少个任务在使用或者等待使用CPU,当CPU完全空闲的时候,平均负荷为0,当CPU工作量饱和的时候,平均负荷为逻辑CPU的个数,当CPU过载的时候,平均负荷大于逻辑CPU的个数,此时表明有任务在等待,通常我们参考5分钟和15分钟的平均负载,因为1分钟太短,随机性较大

  • 3.2、第2行:Tasks

Tasks::112 total:总的进程数
running:正在运行的进程数
sleeping:挂起的进程数
stopped:停止的进程数
zombie:僵尸进程数
  • 3.3、第3行:%Cpu(s)

us:用户空间占用CPU的百分比
sy:内核空间占用CPU的百分比
ni:用户空间内改变过优先级的进程占用CPU的百分比
id:空闲CPU百分比
wa:等待输入输出CPU百分比
hi:CPU服务于硬件终端所耗费CPU百分比
si:CPU服务于软件终端所耗费CPU百分比
st:虚拟机偷取时间
  • 3.4、第4行:KiB Mem

total:物理总内存
free:空闲内存
used:已使用的物理内存
buff/cache:缓冲区内存总量
  • 3.5、第5行:KiB Swap

total:交换区总量
free:空闲交换区总量
used:已使用的交换区总量
avail Mem:可用内存大小
  • 3.6、第6行

PID:进程号
USER:运行用户
PR:优先级
NI:nice值
VIRT:进程使用的虚拟内存总量
RES:进程使用的物理内存总量
SHR:共享内存用量
S:进程状态
%CPU:该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比

注:%CPU显示的是进程占用1个核的百分比,而不是整个cpu的百分比(因为可能是多核),有时候可能会大于100,那是因为该进程启用了多线程占用了多个核心,但是不会超过总核数*100

%MEM:该进程占用的物理内存占总内存的百分比
TIME+:进程使用CPU的总时间
COMMAND:该进程的命令名称,如果一行显示不下,则会进行截取
  • 四、查看内存使用情况

cat /proc/meminfo

MemTotal:所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变
MemFree:表示系统尚未使用的内存

MemAvailable:真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存

Buffers:用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached:分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached:被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active:经常使用的高速缓冲存储器页面文件大小
Inactive:不经常使用的高速缓冲存储器文件大小
Active(anon):活跃的匿名内存
Inactive(anon):不活跃的匿名内存
Active(file):活跃的文件使用内存
Inactive(file):不活跃的文件使用内存
Unevictable:不能被释放的内存页
Mlocked:系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal:交换空间总内存
SwapFree:交换空间空闲内存
Dirty:等待被写回到磁盘的
Writeback:正在被写回的
AnonPages:未映射页的内存/映射到用户空间的非文件页表大小
Mapped:映射文件内存
Shmem:已经被分配的共享内存
Slab:内核数据结构缓存
SReclaimable:可收回slab内存
SUnreclaim:不可收回slab内存
KernelStack:内核消耗的内存
PageTables:管理内存分页的索引表的大小
NFS_Unstable:不稳定页表的大小
Bounce:在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:FUSE用于临时写回缓冲区的内存
CommitLimit:系统实际可分配内存
Committed_AS:系统当前已分配的内存
VmallocTotal:预留的虚拟内存总量
VmallocUsed:已经被使用的虚拟内存
VmallocChunk:可分配的最大的逻辑连续的虚拟内存
HardwareCorrupted:当系统检测到内存的硬件故障时删除掉的内存页的总量
AnonHugePages:匿名大页缓存
CmaTotal:连续可用内存总量
CmaFree:空闲连续可用内存
HugePages_Total:预留的大页内存总量
HugePages_Free:空闲的大页内存
HugePages_Rsvd:已经被应用程序分配但尚未使用的大页内存
HugePages_Surp:初始大页数与修改配置后大页数的差值
Hugepagesize:单个大页内存的大小
DirectMap4k:映射TLB为4kB的内存数量
DirectMap2M:映射TLB为2M的内存数量
DirectMap1G:映射TLB为1G的内存数量

注:通过free查看机器的空闲内存时,发现free的值很小,这是因为buff和cache会占用一部分空间,其实这部分空间也是可用的,所以空闲内存为total-used或者free+buff/cache

  • 五、查看磁盘和磁盘分区、挂载

  • 查看服务器硬盘信息:

df -h

Filesystem:文件系统
Size:容量
Used:已用
Avail:可用
Use%:已用百分比
Mounted on:挂载点
  • 查看所有分区:

fdisk -l

Disk:磁盘
sectors:扇区
Disk label type:磁盘标签类型
Disk identifier:磁盘标识符
  • 查看磁盘分区和挂载情况:

lsblk

  • 查看所有交换分区:

swapon -s

  • 六、网络

  • 查看所有网络接口属性:

ifconfig

  • 查看网卡带宽:

ethtool ens33

注:ethtool 网卡名,因为可能存在多张网卡

  • 查看路由表:

route -n

  • 查看所有监听端口:

netstat -lntp

  • 查看所有已经建立的连接:

netstat -antp

  • 某端口使用情况:

netstat -apn|grep 3306

注:netstat -apn|grep 端口号

  • 查看所有进程:

ps -ef

注:过滤进程,ps -ef|grep 关键字,比如查看mysql的进程,ps -ef|grep mysql

还有一个ps -aux命令,可以多看到进程占用cpu和内存的情况

同样,也可以过滤指定的进程,比如:
ps -aux|grep mysql

  • 查看活动用户:

w

  • 查看指定用户的信息:

id 用户名,比如id root

  • 查看用户登录日志:

last

  • 查看系统所有用户:

cut -d: -f1 /etc/passwd

当个字典用也不错!
文章转载自Java Miraculous,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论