L32.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- dmesg和stat

5.3 dmesg:系统启动异常诊断

5.3.1 命令详解

【命令星级】 ★★★☆☆

【功能说明】

​ dmesg用于显示内核环形缓冲区(kernel-ring buffer)的内容。在进行系统引导时,内核会将硬件和模块初始化相关的信息写到这个缓冲区中。内核环形缓冲区中的消息对于诊断系统问题非常有用。

​ 内核环形缓冲区的内容同时会保存在/var/log目录中,即名称为dmesg的文件里。可通过如下命令进行查看:

[root@centos7 ~]# ll -h /var/log/dmesg
-rw-r--r--. 1 root root 119K Oct 24 20:49 /var/log/dmesg

​ 【语法格式】

dmesg [option]
dmesg [选项]

​ **说明:**在dmesg命令及后面的选项里,每个元素之间都至少要有一个空格。

【选项说明】

​ 表5-3针对该命令的参数选项进行了说明。

​ 表5-3 dmesg命令的参数选项及说明

在这里插入图片描述

5.3.2 使用范例

​ **范例5-6:**查看内核环形缓冲区。

[root@centos7 ~]# dmesg |less	#通过less命令分页查看缓冲区内容,用于查看应急故障等信息。
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-1127.19.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 25 17:23:54 UTC 2020
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.19.1.el7.x86_64 root=UUID=95c7620f-87ac-46eb-90ef-bbf800bd84ed ro crashkernel=auto biosdevname=0 net.ifnames=0 rhgb quiet LANG=en_US.UTF-8
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003fedffff] usable
[    0.000000] BIOS-e820: [mem 0x000000003fee0000-0x000000003fefefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000003feff000-0x000000003fefffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000003ff00000-0x000000003fffffff] usable
:

5.4 stat:显示文件或文件系统状态

5.4.1 命令详解

【命令星级】 ★★★☆☆

【功能说明】

​ stat命令用于详细显示文件或文件系统的状态信息。

【语法格式】

stat [option] [file]
stat [选项] [<文件或目录>]

​ **说明:**在stat命令及后面的选项里,每个元素之间都至少要有一个空格。

【选项说明】

​ 表5-4针对该命令的参数选项进行了说明。

​ 表5-4 stat命令的参数选项及说明

在这里插入图片描述
在这里插入图片描述

5.4.2 使用范例

​ **范例5-7:**查看文件的属性信息。

[root@centos7 ~]# stat /etc/hosts
  File: ‘/etc/hosts’
  Size: 166       	Blocks: 8          IO Block: 4096   regular file
#Size:文件大小。
#Blocks: 占用block数量。
#IO Block: Block总大小为4096(8*512)。
#regular file:文件类型为普通文件。
Device: 803h/2051d	Inode: 16879251    Links: 1
#Device: 设备编号的十六进制(h)和十进制(d)。
#Inode: 文件的inode值。
#Links: 文件的硬链接数。
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
#Access: 文件权限。
#Uid和Gid:用户和用户组。
Context: system_u:object_r:net_conf_t:s0
Access: 2020-10-24 20:55:47.235014226 +0800	#访问时间。
Modify: 2020-10-24 20:55:35.728013814 +0800	#修改时间。
Change: 2020-10-24 20:55:35.732013814 +0800	#状态更改时间。
 Birth: -

​ **范例5-8:**查看文件系统属性。

[root@centos7 ~]# stat -f /etc/hosts	#-f参数显示文件所在分区的文件系统状态而非文件状态,了解即可。
  File: "/etc/hosts"
    ID: 80300000000 Namelen: 255     Type: xfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 4453632    Free: 3836123    Available: 3836123
Inodes: Total: 8912384    Free: 8837689

​ **范例5-9:**如何取得/etc/hosts文件的权限对应的数字内容,比如-rw-r–r–为644,请使用命令取得644这样的数字。

​ 从范例5-7可以发现,文件属性有如下一行内容:

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

​ 显然,可以用sed、cut、awk、grep等命令将这行内容中的644提取出来。

​ 但是这里有一个思想:当命令结果包含我们所需要的内容时,我们首先要考虑,是否有具体的参数能够一步获得我们所需的结果呢?对于上面的范例5-9,我们可使用如下命令:

[root@centos7 ~]# stat -c %a /etc/hosts
644

​ 这个方法是最简单的。同理,想要获取范例5-7结果中的其他值,可以使用其他相应的参数。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125686465