Linux常用命令-云计算篇-100%亲测超详细讲解

推荐不错的学习地址  https://jingyan.baidu.com/article/f96699bb168d75894f3c1b5d.html

12. 

11. 查看网卡硬件信息

lspci|grep Ethernet

10. kdump 捕获崩溃

Kdump详解 参考博客https://blog.csdn.net/weixin_43897044/article/details/88567910

​ Kdump是在系统崩溃、死锁或死机时用来转储内存运行参数的一个工具和服务,是一种新的crash dump捕获机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。kdump需要配置两个不同目的的kernel,其中一个我们在这里称作standard(标准的)(production)kernel;另一个称之为Crash(崩溃的)(capture)kernel。打个比方,如果系统一旦崩溃,那么正常的内核就没有办法工作了,在这个时候将由kdump产生一个用于(capture)捕获当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core文件中以便于Ret Hat工程师分析崩溃的原因,一旦内存信息收集完成,系统将会自动重启这和以前的diskdump、netdump同理,只不过kdump是RHEL6特有的

standard(production)kernel,指的是我正在使用的kernel,当standard kernel在使用时出现crash时,kdump会切换到crash kernel,简单来说,standard kernel会正运行时发生crash,而crash(capture)kernel会被用来捕获production kernel在crash时产生的crash dump

​ 捕获crash dump是在新的crash(capture)kernel的上下文中来捕获的,而不是在standard kernel上下文进行

​ 具体是当standard kernel方式crash的时候,kdump通过kexec自动启动进入到crash kernel当中。如果启动了kdump服务,standard kernel会预留一部分内存,这部分内存用来启动crash kernel。

​ kdump机制主要包括两个组件:kdump和kexec

​ 什么是kexec

​ kexec是一个快速启动kernel的机制,它运行在某一正在运行的kernel中,启动一个新的kernel(crash kernel),而且不用重新经过BIOS就可以完成启动。因为一般BIOS都会花费很长的时间,尤其是在大型并且同时连接许多外部设备的server上的环境下,BIOS会花费更多的时间

​ 查看Linux系统是否开启打开kdump:

[root@localhost ~]# ulimit -c        #如果输出为0,就是关闭,为unlimited则是打开,我的是关闭的
0
1
​ 临时打开/关闭kdump:

[root@localhost ~]# ulimit -c unlimited        #临时打开 比如之前测试推荐业务,后端是C++代码写的,尤其跑自动化/压测时会开启crash捕获,测试完在/tmp/dump查看是否有core
[root@localhost ~]# ulimit -c
unlimited        #验证为开启了
[root@localhost ~]# ulimit -c 0                #临时关闭
[root@localhost ~]# ulimit -c
0                    #验证为关闭了
 

9. 查看系统磁盘

linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息

df -h    查看磁盘使用情况   实际创建虚拟机时的虚拟空间是40G对应磁盘显示38G多

-h 方便阅读方式显示

fdisk -l |grep Disk 查看磁盘分区情况

lsblk  查看硬盘和分区分布

fdisk -l  查看硬盘和分区的详细信息

Disk /dev/vda: 42.9 GB, 429496772960 bytes, 83886000 sectors // 扇区个数

Units = sectors of 1 * 512 = 512 bytes // 柱面单元大小 (一个扇区作为一个柱面)

Sector size (logical/physical): 512 bytes / 512 bytes // 扇区大小

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000b97c2

Device     Boot           Start             End          Blocks      Id         System

/dev/vda1 *                2048      2099199      1048576     83            Linux 

/dev/vda2            2099200    83886079     40893448    8e     Linux LVM

8. 创建虚拟机,使用vnc或者remote viewer连接虚拟机,安装系统如centos7 

mac无remote viewer 。需要下载vnc   

Windows下载地址  https://www.aiweibk.com/262976.html  或者安装virt-viewer-x86-8.0.msi

把系统生成的vv文件(协议 虚拟机ip port passwd等信息)拖到rv软件然后安装虚拟机

按步骤安装 设置用户名 密码 重启虚拟机 登录虚拟机 修改虚拟网络 

修改虚拟网络

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改最后一行为yes

添加DNS=8.8.8.8

配置如下

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
UUID=d1969ca3-fae4-477d-xx-xx
DEVICE=eno1
ONBOOT=yes
IPADDR=xx.xx.xx.xx
PREFIX=23
GATEWAY=xx.xx.xx.xx
DNS1=xx.xx.xx.xx

保存后记得重启网络 systemctl restart network

再查看ip a |grep inet

inet地址变了,分配了ip

inet为ipv4    inet6为ipv6

如果想在虚拟机(192.168开头)上传东西(虚拟机不支持scp  rz 等命令),比如测试CPU平均利用率的shell脚本,则需要给虚拟机绑定浮动ip(创建浮动ip地址,绑定虚拟机。解释:浮动ip地址相当于外网ip 10.121开头,可以从edge-node(172.16开头) scp到浮动ip的机器)

7. 内存利用率

计算方法

used+buff(cache)   /   total 

目前来看集群的内存利用率是在19~22% 

[root@edge-node2 ~]# free -lh
              total        used        free           shared      buff/cache    available
Mem:     755G      106G        561G        4.1G         87G             640G
Low:      755G      194G        561G
High:      0B          0B            0B
Swap:    4.0G       0B            4.0G

6.  CPU利用率

在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间CPU总的执行时间

CPU的使用率是使用CPU的处理能力基准计算实时CPU占用率

CPU时间=user+system+nice+idle+iowait+irq+softirq

除idle外,cpu均被有效利用,取两个采样点,于是有:

cpuusage=[(user_2+sys_2+nice_2+iowait_2+irq_2+softirq_2)-(user_1+sys_1+nice_1+iowait_1+irq_1+softirq_2)]/(total_2-total_1)*100%

或者:

cpu usage=(idle2-idle1)/(total_2-total_1)*100%

%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 98.0 id,  1.5 wa,  0.0 hi,  0.0 si,  0.0 st

第三行: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总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:

参数

解析(单位:jiffies)

user (2032004)

从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。

nice (102648)

从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

system (238344)

从系统启动开始累计到当前时刻,核心时间

idle (167130733)

从系统启动开始累计到当前时刻,除IO等待时间以外其它等待时间

iowait (758440)

从系统启动开始累计到当前时刻,IO等待时间

irq (15159)

从系统启动开始累计到当前时刻,硬中断时间

softirq (17878)

从系统启动开始累计到当前时刻,软中断时间

计算cpu利用率的shell脚本

[root@edge-node1 tmp]# cat /proc/stat  查看CPU
cpu  125094388 160 19646788 3863197092 1316929 22008021 20012906 0 105025966 0
cpu0 2300773 0 316963 59961223 28218 350919 322074 0 1989117 0
cpu1 1885273 2 1076616 59629637 19424 345949 333747 0 261688 0
cpu2 1777766 2 382328 60422289 24439 351985 339369 0 1086476 0
cpu3 1591870 11 367656 60620419 20955 352620 342047 0 1049030 0
cpu4 1573398 0 352758 60652301 21908 352368 340665 0 1072780 0

各个参数的具体解释:

第一排是cpu总计,下面是2个4核cpu的参数,故有8行数据。

user (494881706) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒

nice (19) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)

system (67370877) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)

idle (876689477) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)

iowait (17202366) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,

irq (200116) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)

softirq (0) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

CPU利用率技术脚本:本脚本持续显示cpu的利用率

知道了/proc文件的内容之后就可以计算cpu的利用率了,具体方法是:先在t1时刻读取文件内容,获得此时cpu的运行情况,然后等待一段时间在t2时刻再次读取文件内容,获取cpu的运行情况,然后根据两个时刻的数据通过以下方式计算cpu的利用率:100 – (idle2 – idle1)*100/(total2 – total1)  其中total = user + system + nice + idle + iowait + irq + softirq

#!/bin/bash
while(true)
do

                                                                                                                                                                        #   $1       $2       $3           $4     $5         $6     $7                                                              
CPU_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')    #打印第一行cpu每列,user    nice   system4     idle  iowait      irq   softirq 
SYS_IDLE_1=$(echo $CPU_1 | awk '{print $4}')     #打印第4列idle,从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间
Total_1=$(echo $CPU_1 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}')     #打印cpu全部列之和
sleep 2    #等待2秒
CPU_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')     #再次取最新的列
SYS_IDLE_2=$(echo $CPU_2 | awk '{print $4}')     #再次打印第4列idle,从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间
Total_2=$(echo $CPU_2 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}')     #第二次打印cpu全部列之和
SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`    #expr命令是一个手工命令行计数器,用于求表达式变量的值,一般用于整数值,也可用于字符串 > expr length “this is a test”  为14(算上空格了)

Total=`expr $Total_2 - $Total_1`      #2次cpu总和的差值
TT=`expr $SYS_IDLE \* 100`          # (idle2 – idle1)*100   
SYS_USAGE=`expr $TT / $Total`   # (idle2 – idle1)*100/(total2 – total1)
SYS_Rate=`expr 100 - $SYS_USAGE`    #cpu利用率为100 – (idle2 – idle1)*100/(total2 – total1)  
echo "The CPU Rate : $SYS_Rate%"
echo "------------------"
done

5. inux下dmidecode命令获取硬件信息

dmidecode在 Linux 系统下获取有关硬件方面的信息。dmidecode 遵循 SMBIOS/DMI 标准,以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息, 其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等, 既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。

aptitude install dmidecode # Debian/Ubuntu

yum install dmidecode # Fedora

pacman -S dmidecode # Arch Linux

emerge -av dmidecode # Gentoo

1、查看内存槽数、那个槽位插了内存,大小是多少

dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range

2、查看最大支持内存数

dmidecode|grep -P 'Maximum\s+Capacity'

3、查看槽位上内存的速率,没插就是unknown。

dmidecode|grep -A16 "Memory Device"|grep 'Speed'

dmidecode的输出格式一般如下:

Handle 0×0002

DMI type 2, 8 bytes

Base Board Information

Manufacturer:Intel

Product Name: C440GX+

Version: 727281-0001

Serial Number: INCY92700942

其中的前三行都称为记录头(recoce Header), 其中包括了:
1、recode id(handle): DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0×0002。
2、dmi type id: 记录的类型,譬如说:BIOS,Memory,上例是type 2,即”Base Board Information”
3、recode size: DMI表中对应记录的大小,上例为8 bytes.(不包括文本信息,所有实际输出的内容比这个size要更大。)
记录头之后就是记录的值:
4、decoded values: 记录值可以是多行的,比如上例显示了主板的制造商(manufacturer)、model、version以及serial Number。
dmidecode的使用方法
1. 最简单的的显示全部dmi信息:dmidecode

这样将输出所有的dmi信息,你可能会被一大堆的信息吓坏,通常可以使用下面的方法。

2.更精简的信息显示: dmidecode -q

-q(–quite) 只显示必要的信息,这个很管用哦。
3.显示指定类型的信息:
通常我只想查看某类型,比如CPU,内存或者磁盘的信息而不是全部的。这可以使用-t(–type TYPE)来指定信息类型:

4. 服务器操作系统信息

hostnamectl 

[root@edge-xx ~]# hostnamectl
   Static hostname: edge-node2
   Pretty hostname: [edge-node2]
         Icon name: computer-server
           Chassis: server
        Machine ID: 499aa536dxxe5e
           Boot ID: fe03xxxxe1
  Operating System: MEC Node 4.2.0
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 4.19.104
      Architecture: x86-64

uname -a 

[root@edge-xx ~]# uname -a
Linux edge-xx 4.19.104 #1 SMP Mon Feb 24 19:19:24 CST 2020 x86_64 x86_64 x86_64 GNU/Linux

3. 查看服务器内存使用情况

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等

  • -b  以Byte为单位显示内存使用情况。
  • -k  以KB为单位显示内存使用情况。
  • -m  以MB为单位显示内存使用情况。
  • -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值

B = bytes
K = kilos
M = megas
G = gigas
T = teras

物理内存

free 

free -lh  按照适合显示的单位去显示 最完美的命令

free    单位:kb

free -m  单位:M

free -g  单位:G

发现在创建虚拟机的时候 分配的内存是4048M 也就是3.953个G 但是实际free显示的total内存是3.7G

free命令显示的内容,第一行的数据是以系统视角看的,第二行的数据是以应用程序的视角看的。
第一行的used一项,其数据不单包含程序使用的内存,还包含buffers跟cached的内存,因此看上去可用的内存很少。
第二行的数据,分别是used-buffers-cached,跟free+buffers+cached,算了一下程序总的内存使用率是(total - free - buffers - cached) / total = 0.038 左右,因此top显示一列0.0也没什么问题。

2. 云计算测试项

hugepage是在linux2.6内核被引入的,主要提供4k的page和比较大的page的选择

cat /proc/meminfo   查看Hugepagesize大小  数量

测试点(centos7)   

1 逻辑CPU内核:64

2 Huge Pages(size:amount):[HugePage:{sizeKB='1048576', amount='18'}]

3 设备透传:true

4 物理内存:755.64GB

5 Kdump状态:disabled

6 生产商:xx

产品系列:ThinkSystem

版本:07

产品名称:ThinkSystem SR650 -[7X06CTO1WW]-

UUID:66DEA72E-xx-11EA-xx-xx

序列号: J301N7C4

CPU类型:Intel Westmere Family

CPU型号:Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz

7 存储利用率:1.48%

测试命令行

1 less /proc/cpuinfo |grep 'processor'|wc -l       

2 less /proc/meminfo|grep Hugepagesize

3 less /proc/meminfo|grep HugePages_Free

4 free -lh

5 [root@edge-node2 ~]# ulimit -c   #如果输出为0,就是关闭,为unlimited则是打开,我的是关闭的
0
[root@edge-node2 ~]# ulimit -c unlimited      #临时打开
[root@edge-node2 ~]# ulimit -c
unlimited
[root@edge-node2 ~]# ulimit -c 0     #临时关闭
[root@edge-node2 ~]# ulimit -c
0

6  dmidecode |grep -A16 "System Information$"       查看主板信息

7 ceph df     查看集群容量状态

在Linux中,内存都是以页的形式划分的,默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸

vim /etc/security/limits.conf

1. 物理内存 逻辑内存

服务器 8C16G为8核16G

查看CPU核数 more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l 

或者查看核数 more /proc/stat   第一排是cpu总计,下面是2个32核cpu的参数,故有64行数据

查看磁盘 free -g 

参考博客https://blog.csdn.net/weixin_39628256/article/details/111551427

# cat /proc/cpuinfo   查看物理cpu

有多少physical id 就有多少个cpu,我们的服务器是8个

有多少个core id就有多少核 --8个物理内核

总核数(指的是总的CPU物理内核数) = 物理CPU个数 X 每个物理CPU的核数  = 4 * 16 = 64
总逻辑CPU数(processor) = 物理CPU个数(physical) X 每个物理CPU的核数(cpu cores的值) X 超线程数( 2-如果支持并开启ht)

= 4 *16 * 2=132

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

= cat /proc/cpuinfo |grep "physical id"|uniq|wc -l * cat /proc/cpuinfo | grep "cores" | uniq * 2

是否开启intel的超线程技术(HT)
        如果有两个逻辑CPU具有相同的"core id",那么超线程是打开的。可以根据以下原则,来判断是否支持HT技术
        如果"siblings"和"cpu cores"一致,则说明不支持超线程,或者超线程未打开
        如果"siblings"是"cpu cores"的两倍,则说明支持超线程,并且超线程已打开

cat /proc/cpuinfo |grep "sibling"|uniq  

执行结果:siblings : 32

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

执行结果:cpu cores : 16



cat /proc/cpuinfo |grep "physical id"|grep "0"|wc -l   查看物理CPU个数
32


cat /proc/cpuinfo| grep "cpu cores"| uniq   查看每个物理CPU中core的个数(即核数)

cpu cores    : 16


grep "physical id" /proc/cpuinfo|sort -u|wc -l   
2


cat /proc/cpuinfo| grep "processor"| wc -l    查看逻辑CPU个数 逻辑CPU内核
64


cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c    查看CPU型号
64  Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz

cat /proc/cpuinfo| grep "cpu cores"| uniq   查看每个物理CPU中core的个数(即核数)  

cpu cores : 16

cat /proc/cpuinfo |grep MHz|uniq   查看CPU的主频

cpu MHz        : 999.995
cpu MHz        : 2276.509
cpu MHz        : 1000.007
cpu MHz        : 1000.004

查看Linux上存在的处理器数量的最简单和最短的方法,因为它是coreutils 的一部分而被广泛扩展

lscpu | grep 'CPU(s)'

查看cpu参数的命令

lscpu

[root@edge-node1 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                64   逻辑CPU个数
On-line CPU(s) list:   0-63
Thread(s) per core:    2  每核超线程数
Core(s) per socket:    16  每核CPU数
Socket(s):             2 物理CPU个数

NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
Stepping:              7
CPU MHz:               1000.003
BogoMIPS:              4600.00
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              22528K
NUMA node0 CPU(s):     0-15,32-47
NUMA node1 CPU(s):     16-31,48-63
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi

待续。。。

猜你喜欢

转载自blog.csdn.net/weixin_42498050/article/details/114787049