• 【Linux命令】系统状态检测命令8个(ifconfig、uname、uptime、free、who、last、history、sosreport)


    目录

    一、ifconfig命令

      ifconfig命令用来获取网卡配置与网络状态等信息。主要查看网卡名称,inet后的ip。ether参数后面的网卡物理地址(MAC地址)以及RX,TX接收数据包和发送数据包的个数及累计流量

    格式:

    ifconfig [网络设备] [参数]
    或
    Usage:
      ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
      [add <address>[/<prefixlen>]]
      [del <address>[/<prefixlen>]]
      [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]
      [netmask <address>]  [dstaddr <address>]  [tunnel <address>]
      [outfill <NN>] [keepalive <NN>]
      [hw <HW> <address>]  [mtu <NN>]
      [[-]trailers]  [[-]arp]  [[-]allmulti]
      [multicast]  [[-]promisc]
      [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]
      [txqueuelen <NN>]
      [[-]dynamic]
      [up|down] ...

    参数:

    add<地址> 设置网络设备IPv6的IP地址。
    del<地址> 删除网络设备IPv6的IP地址。
    up 启动指定的网络设备。
    down 关闭指定的网络设备。
    <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
    io_addr<I/O地址> 设置网络设备的I/O地址。
    irq<IRQ地址> 设置网络设备的IRQ。
    media<网络媒介类型> 设置网络设备的媒介类型。
    mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
    metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
    mtu<字节> 设置网络设备的MTU。
    netmask<子网掩码> 设置网络设备的子网掩码。
    tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
    -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
    -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
    -promisc 关闭或启动指定网络设备的promiscuous模式。
    [IP地址] 指定网络设备的IP地址。
    [网络设备] 指定网络设备的名称。

    实例:

    1)查看当前网卡信息

    [root@VM_0_10_centos ~]# ifconfig 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet ip地址  netmask 掩码地址  broadcast 广播地址
            inet6 fe80::5054:ff:feda:2f1f  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:da:2f:1f  txqueuelen 1000  (Ethernet)
            RX packets 38381325  bytes 5072848033 (4.7 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 38124855  bytes 5744200560 (5.3 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 665611  bytes 100818185 (96.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 665611  bytes 100818185 (96.1 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    PS:UP 表示网卡处于启动的状态;BROADCAST 表示这个网卡有广播地址,可以发送广播包;MULTICAST 表示网卡可以发送多播包;LOWER_UP 表示 L1 是启动的,即网线插着。MTU1500 最大传输单元 MTU 为 1500,这是以太网的默认值。

    2)指定关闭开启网卡(慎用)

    # ifconfig eth0 down
    # ifconfig eth0 up

    3)添加删除ipv6地址

    # ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡添加IPv6地址
    # ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址

    4)配置MAC地址

    # ifconfig eth0 down //关闭网卡
    # ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
    # ifconfig eth0 up //启动网卡

    5)配置ip地址

    # ifconfig eth0 192.168.22.10
    # ifconfig eth0 192.168.22.10 netmask 255.255.255.0
    # ifconfig eth0 192.168.22.10 netmask 255.255.255.0 broadcast 192.168.22.255

    6)启动和关闭ARP协议

    # ifconfig eth0 arp  //开启
    # ifconfig eth0 -arp  //关闭

    7)设置最大传输单元

    # ifconfig eth0 mtu 1500 
    //设置能通过的最大数据包大小为 1500 bytes

    补充:

      一位占8bit。

     

     如:10.100.122.2/24,后面的24表示:前24位是网络号,后面8位是主机号

      伴随着 CIDR 存在的,一个是广播地址,10.100.122.255。如果发送这个地址,所有 10.100.122 网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0。

        将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.100.122。后面一个 0,转换成二进制是 0,0 和任何数值取 AND,都是 0,因而最后一个数变为 0,合起来就是 10.100.122.0。这就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

     二、uname命令

      uname命令用来查看系统内核与系统版本等信息。

    格式:

    uname [参数]

    参数:

    参数 作用
    -a,--all 显示全部信息
    -s,--kernel-name 显示操作系统名称
    -n,--nodename 显示网络主机节点名
    -r,--kernel-release 显示操作系统内核发行版本信息
    -v,--kernel-version 显示操作系统版本(系统时间)
    -m, --machine 显示计算机类型(机器硬件cpu)
    -p, --processor 显示处理器类型
    -i, --hardware-platform 显示硬件平台信息

    实例:

    1)查看系统版本信息(分别对应当前系统的内核名称、主机名、内核发行版本,系统时间、硬件名称、硬件平台、处理器类型及操作系统名称)

    [root@VM_0_10_centos ~]# uname -a
    Linux VM_0_10_centos 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
    或
    [root@VM_0_10_centos ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 

    2)查看内核信息

    [root@VM_0_10_centos ~]# uname -r
    3.10.0-957.21.3.el7.x86_64

    PS:3代表主版本号(有结构性变化才更改),10表示此版本号(新增功能时变化。一般基数表示测试版,偶数表示开发版)。0表示对此版本的修订次数或补丁包数。957表示编译的次数,每次编译可对少数程序优化或修改。el7表示版本的特殊信息(el代表企业版Linux,pp代表测试版,fc代表Fedora core,rc代表候选版)。x86_64表示64位操作系统。

    三、uptime命令

      uptime命令用来查看系统的负载信息。可以显示当前系统时间,系统已运行时间,启用终端数量及平均负载值(1分钟、5分钟、15分钟)的压力情况。负载值越低越好,尽量不要超过2,在生产环境中不要超过5。

    格式:

    uptime

    参数:

    -p, --pretty
                  show uptime in pretty format//以比较友好的格式输出
    -s, --since
                  system up since, in yyyy-mm-dd HH:MM:SS format//系统启动时间 

    实例:

    1)查看系统负载信息(和w命令查看结果的第一行一样)

    [root@VM_0_10_centos ~]# uptime 
     17:40:00         up 65 days,  9:05,    1 user,  load average: 0.00, 0.01, 0.05
    当前系统时间 系统已运行的时间 用户数 系统平均负载值

    补充:

      lscpu可以查看系统cpu相关信息

     查看cpu核数

    [root@VM_0_10_centos shellScript]# lscpu | grep "CPU(s)"
    CPU(s):                1

    四、free命令

      用于显示当前系统中内存的使用量信息(包括物理、交换、内核缓冲区内存)。使用free命令时可以加上-h参数,更人性化的输出当前内存的实时使用量信息。我们也可以使用cat命令查看/proc/目录下对应的系统信息

    格式:

    free [选项]

    参数:

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

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

    • -o  不显示缓冲区调节列。
    • -s<间隔秒数>  持续观察内存使用状况。
    • -t  显示内存总和列。
    • -c<次数>    显示多少次
    • -V  显示版本信息。

    实例:

    1)查看内存情况

    [root@VM_0_10_centos shellScript]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.8G        549M         67M        556K        1.2G        1.1G
    Swap:            0B          0B          0B

    2)周期性查询内存使用量(每10秒查询一次)

    [root@VM_0_10_centos shellScript]# free -s 10
                  total        used        free      shared  buff/cache   available
    Mem:        1882352      563508       85164         556     1233680     1133180
    Swap:             0           0           0

    补充:

      buff/cache:内存缓冲区

      buff:指 buffer cache为 "缓冲区"。要理解缓冲区,必须明确另外两个概念:"扇区" 和 "块"。扇区是设备的最小寻址单元,也叫 "硬扇区" 或 "设备块"。块是操作系统中文件系统的最小寻址单元,也叫 "文件块" 或 "I/O 块"。每个块包含一个或多个扇区,但大小不能超过一个页面,所以一个页可以容纳一个或多个内存中的块。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示。buffer cache 只有块的概念而没有文件的概念,它只是把磁盘上的块直接搬到内存中而不关心块中究竟存放的是什么格式的文件。

      cache:指 page cache为 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它主要用来减少对磁盘的 I/O 操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问。页高速缓存缓存的是内存页面。缓存中的页来自对普通文件、块设备文件(这个指的就是 buffer cache )和内存映射文件的读写

      页高速缓存对普通文件的缓存:当内核要读一个文件(比如 /etc/hosts)时,它会先检查这个文件的数据是不是已经在页高速缓存中了。如果在,就放弃访问磁盘,直接从内存中读取(缓存命中)。如果数据不在缓存中(未命中缓存),此时内核会调度块 I/O 操作从磁盘去读取数据。然后内核将读来的数据放入页高速缓存中。这种缓存的目标是文件系统可以识别的文件(比如 /etc/hosts)。

    五、who命令

      用户查看当前登录主机的用户终端信息。

    格式:

    who [参数]

    参数:

    -a,-all    等同于指定 -bdlprtTu 标志。
    -b , --boot      指出最近系统启动的时间和日期。
    -d, --dead     显示没有被 init 重新生成的所有到期的进程。退出字段用于显示死进程并包含死进程的终止和退出值(由 wait 进程返回的)。(这个标志用于通过查看应用程序返回的错误号来确定一个进程的结束原因。)
    -l, --login     列出任何登录进程。
    -m     仅显示关于当前终端的信息。who -m 命令等同于 who am i 和 who am I 命令。
    -p, --process    列出任何当前活动的和以前已由 init 生成的活动进程。
    -q 打印一份在本地系统上的用户和用户数的快速清单。
    -r , --runlevel    显示当前进程的运行级别。
    -s , --short    仅列出名字、线路和时间字段。这个标志是缺省值;因此,who 和 who -s 命令是等效的。
    -t, --time     显示 root 用户上一次用 date 命令对系统时钟做的更改。如果 date 命令自从系统安装以来还没有被运行过, who -t 命令就不产生输出。
    -u 或 -i 显示每个当前用户的用户名、tty、登录时间、线路活动和进程标识。
    -H 显示一个头(标题)。
    -T 或 -w , --mesg    显示 tty 的状态并如下显示谁能够对 tty 写入:    

    实例:

    1)显示当前登录的终端数(登录的用户名、终端设备、登录系统的时间)

    [root@VM_0_10_centos shellScript]# who
    root     pts/0        2019-10-28 09:43 (120.197.164.60)

    2)显示用户登录来源

    [root@VM_0_10_centos shellScript]# who -lH
    NAME     LINE         TIME             IDLE          PID COMMENT
    LOGIN    tty1         2019-08-21 08:34              2960 id=tty1
    LOGIN    ttyS0        2019-08-21 08:34              2961 id=tyS0

    3)显示终端属性

    [root@VM_0_10_centos shellScript]# who -TH
    NAME       LINE         TIME             COMMENT
    root     + pts/0        2019-10-28 09:43 (120.197.164.60)

    六、last命令

      用于查看所有系统近期的登录记录。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接系统。执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。

    格式:

    last [参数]

    参数:

    -num |-n num指定输出记录的条数

    -f file 指定记录文件作为查询的log文件
    -t YYYYMMDDHHMMSS 显示指定时间之前的登录情况
    username 账户名称<br>tty 终端机编号

    -R 不显示登录系统或终端的主机名称或IP

    -a 将登录系统或终端的主机名过IP地址显示在最后一行
    -d 将IP地址转成主机名称
    -I 显示特定IP登录情况。
    -o 读取有linux-libc5应用编写的旧类型wtmp文件
    -x 显示系统关闭、用户登录和退出的历史
    -F 显示登录的完整时间
    -w 在输出中显示完整的用户名或域名

    实例:

    第一列:用户名

    第二列:终端位置(pts/0伪终端,意味着从SSH或telnet等工具远程连接的用户,图形界面终端归于此类。tty0直接连接到计算机或本地连接的用户。后面的数字代表连接编号)

    第三列:登录IP或内核(如果是:0.0或者什么都没有,意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中)

    第四列:开始时间

    第五列:结束时间(still login in尚未退出,down直到正常关机,crash直到强制关机)

    第六列:持续时间

    1)指定记录的数量

    [root@VM_0_10_centos shellScript]# last -n 5
    root     pts/0        120.197.164.60   Mon Oct 28 09:43   still logged in   
    root     pts/0        120.197.164.60   Fri Oct 25 14:41 - 18:07  (03:26)    
    root     pts/0        120.197.164.60   Fri Oct 25 08:40 - 14:41  (06:00)    
    root     pts/0        120.197.164.60   Thu Oct 24 17:49 - 18:16  (00:26)    
    root     pts/0        120.197.164.60   Thu Oct 24 11:35 - 17:46  (06:10)

    2)指定查询文件,默认为wtmp。

    [root@VM_0_10_centos shellScript]# last -n 5 -f /var/log/btmp
    root     ssh:notty    14.152.73.14     Mon Oct 28 11:35    gone - no logout 
    root     ssh:notty    91.121.2.33      Mon Oct 28 11:35 - 11:35  (00:00)    
    barbie   ssh:notty    196.27.127.61    Mon Oct 28 11:35 - 11:35  (00:00)    
    barbie   ssh:notty    196.27.127.61    Mon Oct 28 11:35 - 11:35  (00:00)    
    hamish   ssh:notty    119.29.195.107   Mon Oct 28 11:34 - 11:35  (00:01)

    七、history命令

      用于显示历史执行的命令。能显示当前用户在本地计算机中执行的1000条命令。如果觉得1000条不够,可以在/etc/profile文件中自定义HISTSIZE的变量值。使用history -c命令会清空所有命令的历史记录。还可以使用"!编码数字"的方式来执行某一次的命令。

    PS:想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录下的用户主目录下的“.bash_history文件,该文件记录了用户所使用的命令和历史信息。(/home/usertest1/.bash_history)。系统中以“.”开头的文件是隐藏文件,大多数为系统服务文件。

    格式:

    history [选项] [参数]

    参数:

    Num: 显示历史记录中最近的N个记录;history 10
    -c:清空当前历史命令;
    -a:将历史命令缓冲区中命令写入历史命令文件中;
    -r:将历史命令文件中的命令读入当前历史命令缓冲区;
    -w:将当前历史命令缓冲区命令写入历史命令文件中;
    -d<offset>:删除历史记录中第offset个命令
    -n<filename>:读取指定文件

    实例:

    1)显示历史命令

    [root@VM_0_10_centos shellScript]# history
    或
    [root@VM_0_10_centos shellScript]# !10

    补充:

    显示执行历史记录时间:
    1、默认情况下,history并不记录命令的执行时间,分析起来很困难。我们可以使用HISTTIMEFORMAT在历史中显示TIMESTAMP。

    2、把上面的 export HISTTIMEFORMAT="%F %T " 命令加入到~/.bashrc中即可在登录后自动开启history时间戳了。添加完成后,执行source .bashrc 让其生效。仅针对当前账号有效。
    3、其实HISTTIMEFORMAT的格式就是 strftime函数的格式,比如上面的"%F %T ",%F表示显示出Y-M-D格式的日期,%T表示显示出H-M-S这样格式的时间。
    4、用Ctrl+R搜索历史命令;当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl+R然后输入关键字。如搜索”date”,则显示历史的命令中含有”date”的命令 date "+今天是:%F,%A,时间是:%T.准备吃饭去"。按回车,就可以重新执行这条命令了,而按左箭头键或右箭头键则可以直接修改,改完之后按回车执行,非常方便!
    注:在命令行提示符下按下Ctrl+R,终端将显示如下提示reverse-i-search】

    八、sosreport命令 

      sosreport命令用于收集系统配置及架构信息并输出诊断文档。要有sosreport命令,需要安装sos包,默认Linux系统已安装。如果没有安装,使用yum -y install sos安装即可。

    格式:

    sosreport [选项]

    参数:

    -l, --list-plugins  列出当前enable和disable的所有服务插件及当前available的所有插件。

    -a, --alloptions  启用所有模块

    实例:

    生成报告:

      打开终端输入sosreport命令,该命令正常情况下会在几分钟内完成。根据本地配置,在某些情况下,某些选项可能需要更长的时间才能完成。一旦完成,sosreport将在/var/tmp目录中生成一个压缩文件。不同版本使用不同的压缩方案(** gz,bz2,或xz**)。该文件应提供给红帽的支持代表(在开放的情况下通常作为附件)。

    PS:sosreport需要root权限才能运行

    [root@VM_0_10_centos ~]# sosreport 
    sosreport (version 3.6)
    This command will collect diagnostic and configuration information from
    this CentOS Linux system and installed applications.
    An archive containing the collected information will be generated in
    /var/tmp/sos.miuJuD and may be provided to a CentOS support
    representative.
    Any information provided to CentOS will be treated in accordance with
    the published support policies at:
      https://wiki.centos.org/
    The generated archive may contain data considered sensitive and its
    content should be reviewed by the originating organization before being
    passed to any third party.
    No changes will be made to system configuration.
    Press ENTER to continue, or CTRL-C to quit.回车确认手机信息
    Please enter the case id that you are generating this report for []: 回车确认主机编号
     Setting up archive ...
     Setting up plugins ...
     Running plugins. Please wait ...
      Finishing plugins              [Running: systemd]                                       
     Plugin systemd timed out
    [plugin:systemd] command 'systemctl status --all' timed out after 300s
      Finished running plugins                                                               
    Creating compressed archive...
    Your sosreport has been generated and saved in:
      /var/tmp/sosreport-VM010centos-2019-10-28-neljwgq.tar.xz
    The checksum is: 2d28abeb5022dfed805d73b373e5cfc5
    Please send this file to your support representative.

    在/vat/tmp目录下有该文件(并有一个md5的加密文件)

    [root@VM_0_10_centos ~]# ll /var/tmp/sosreport-VM010centos-2019-10-28-neljwgq.tar.xz
    -rw------- 1 root root 28948572 Oct 28 15:12 /var/tmp/sosreport-VM010centos-2019-10-28-neljwgq.tar.xz
  • 相关阅读:
    RocketMQ延迟消息的代码实战及原理分析
    如何做技术选型?Sentinel 还是 Hystrix?
    什么是服务熔断?
    降级-熔断-限流-傻傻分不清楚
    java-分布式-降级 熔断 限流
    java-分布式-分布式事务
    常用限流算法的应用场景和实现原理
    使用Redis作为分布式锁的一些注意点
    ansible {{}}引用变量,变量中嵌套变量如何表示
    shell获得java进程号跟进程对应的线程号
  • 原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11739438.html
Copyright © 2020-2023  润新知