第5章 Linux信息显示与搜索文件命令

第5章 Linux信息显示与搜索文件命令

5.1、uname:显示系统个信息

5.1.1、命令详解

【功能说明】

  uname命令用于显示系统相关信息,比如内核版本号、硬件架构等。

【语法格式】

uname [option]
uname [选项]

【选项说明】

表5-1、针对该命令

参数选项 解释说明 参数选项 解释说明
-a 显示系统所有相关功能 -v 显示内核版本
-m 显示计算机硬件架构 -p 显示主机处理器类型
-n 显示主机名称 -o 显示操作系统名称
-r 显示内核发型版本号 -i 显示硬件平台
-s 显示内核名称    

5.1.2、使用范例

1、基础范例

复制代码
[root@db136 tmp]#uname -a
Linux db136 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@db136 tmp]#uname -m
x86_64
[root@db136 tmp]#uname -n
db136
[root@db136 tmp]#uname -r
3.10.0-957.el7.x86_64
[root@db136 tmp]#uname -s
Linux
[root@db136 tmp]#uname -v
#1 SMP Thu Nov 8 23:39:32 UTC 2018
[root@db136 tmp]#uname -p
x86_64
[root@db136 tmp]#uname -o
GNU/Linux
[root@db136 tmp]#uname -i
x86_64
[root@db136 tmp]#
复制代码

2、技巧性范例

  将命令版本"uname -r"与反引号一起使用,用在其他命令中替代Linux内核版本号。比如,在安装LVS时,就有一步这样的操作。

[root@db136 tmp]#ln -s /usr/src/kernels/`uname -r`/ /usr/src/linux

5.2、hostname:显示或设置系统的主机名

5.2.1、命令详解

【功能说明】

  hostname命令用于显示或设置系统的主机名称。许多网络程序均用主机名来标识主机。

【语法格式】

hostname [option]
hostname [选项]

【参数说明】

表5-2、hostname命令的参数选项说明

参数选项 解释说明
-a 如果设置了主机别名,则可以用a选项来显示主机的别名
-i 显示主机的IP地址,这个参数需要依赖DNS解析,比较慢,推荐使用下面的I选项
I 显示主机的所有IP地址,不依赖DNS解析,速度较快
-s 显示主机格式主机名

5.2.2、使用范例

范例5-1、显示主机名

[root@db132 tmp]#hostname 
db132
[root@db132 tmp]#

范例5-2、临时修改主机名

[root@db132 tmp]#hostname A
[root@db132 tmp]#logout 

重启后,失效。

范例5-3、永久修改主机名

[root@db132 ~]#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=db132
[root@db132 ~]#

需要说明的是,Centos7系统中,主机名的配置文件换成了/etc/hostname。

范例5-4、配置主机hosts解析。

[root@db132 ~]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.142.132 db132 testdb
[root@db132 ~]#hostname -s
db132
[root@db132 ~]#hostname -a
testdb

范例5-5、获取系统的IP地址。

[root@db132 ~]#hostname -I
192.168.142.132 
[root@db132 ~]#

5.3、dmesg:系统启动异常诊断

5.3.1、命令详解

【功能说明】

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

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

[root@db132 ~]#ll -h /var/log/dmesg  
-rw-r--r--. 1 root root 89K Nov  5 06:31 /var/log/dmesg
[root@db132 ~]#

【语法格式】

dmesg [option]
dmesg [选项]

【选项说明】

参数选项 解释说明
-c 显示信息后,清除环形缓冲区中的内容
-s bugsize 设置缓冲区大小,默认16384
-n level 显示消息等级

 

5.3.2、使用范例

范例5-6、查看内核环形缓冲区

[root@db132 ~]#dmesg |less

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

5.4.1、命令详解

【功能说明】

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

【语法格式】

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

【选项说明】

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

参数选项 解释说明
-f 显示文件所在分区的文件系统状态而非文件状态
-c 使用指定输出格式优化替代默认值
-t 使用简洁格式输出
支持的文件格式

%a 八进制

%A 用可读性较好的方式输出

%b 已经分配块数(参见%B)

%B 以字节为单位输出%b所报告的每个块的大小

%C Selinux安全环境字符串

%d 十进制设备编号

%D 十六进制设备编号

%f  十六进制演示模式

%F 文件类型

%g 文件的属组ID

%G 文件的属组组名

%h 硬链接数量

%i Inode编号

%n 文件名

%N 如果对象是一个符号链接,则显示引用到的其他文件名

%o I/O块大小

%s 总计大小,以字节为单位

%t 十六进制主设备

%T 十六进制子设备

%u 文件的属主ID

%U 文件的属主用户名

%x 上次访问时间

%X 从UNIX元年起计的上次访问时间

%y 上次更改时间

%Z 从UNIX元年起计的上次更改时间

支持的文件系统格式

%a 非超级用户可用的剩余块数

%b 文件系统的总数据块数

%c 文件系统中文件节点的总数

%d 文件系统中空闲文件的节点数

%f 文件系统中空闲的块数

%C SElinux安全环境字符串

%i 十六进制文件系统ID

%l 文件名允许的最大长度

%n 文件名

%s 块大小(用于快速传输)

%S 基本块大小(用于块计数)

%t 十六进制类型描述

%T 可读性较好的类型描述

5.4.2、使用范例

范例5-7、查看文件的属性信息

复制代码
[root@db132 ~]#stat /etc/hosts
  File: `/etc/hosts'
  Size: 187             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 1054170     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-01-16 10:31:43.578745792 +0000
Modify: 2020-01-16 10:31:40.921745989 +0000
Change: 2020-01-16 10:31:40.931745716 +0000
[root@db132 ~]#

Size: 187             Blocks: 8          IO Block: 4096   regular file
#<== size:文件大小
#<== Blocks: 占用block数量
#<== IO Block:Block总大小为4096(8*512)
#<== regular file:文件类型为普通文件

Device: fd00h/64768d    Inode: 1054170     Links: 1
#<==Device:设备编号的十六进制(h)和十进制(d)
#<==Inode:文件的inode值
#<==Links:文件的硬链接数。

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
#<==Access:文件权限
#<==Uid和Gid:用户和用户组。

Access: 2020-01-16 10:31:43.578745792 +0000 #访问时间
Modify: 2020-01-16 10:31:40.921745989 +0000 #修改时间
Change: 2020-01-16 10:31:40.931745716 +0000 #状态更改时间。
复制代码

范例5-8、查看文件系统属性。

[root@db132 ~]#stat -f /etc/hosts # -f参数显示文件所在分区的文件系统状态而非文件状态,了解即可。
  File: "/etc/hosts"
    ID: a432daa018c2aa Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 12868767   Free: 10056165   Available: 9400805
Inodes: Total: 3276800    Free: 3183946
[root@db132 ~]#

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

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

  同理,想要获取结果中的其他值,可以使用其他相应的参数。

5.5、du:统计磁盘空间使用情况

5.5.1、命令详解

【功能说明】

  du命令可以用于统计磁盘空间的使用情况,这个命令有助于我们找出哪个文件过多地占用了磁盘空间。

【语法格式】

du [option] [file]
du [选项] [文件或目录]

【选项说明】

表5-5、du命令及说明

参数选项 解释说明
-a 显示所有文件大小
-h 以人类可读的方式查看大小,以K、M、G为单位
-s 显示文件的总大小
--exclude=<目录或文件> 略过指定的目录或文件
-X,--exclude-from=FILE 从文件读取需要略过的目录或文件
--max-depth=N 显示N级子目录的大小,当N=0时,该参数和-s参数的效果一样

5.5.2、使用范例

范例5-10、通过参数-a显示所有目录或文件所占空间。

[root@db132 ~]#du -a # 显示当前目录下所有文件(包括隐藏文件及子目录下的所有文件)的大小

范例5-11、参数-s与-h的使用案例

[root@db132 ~]#du -sh /usr/local/
2.8G    /usr/local/
[root@db132 ~]#

范例5-12、显示指定层次的目录的大小

复制代码
[root@db132 ~]#du -h --max-depth=1 /usr/local/ 
4.0K    /usr/local/games
4.0K    /usr/local/etc
4.0K    /usr/local/include
316M    /usr/local/python3.6
4.0K    /usr/local/scripts
4.0K    /usr/local/sbin
9.7M    /usr/local/src
2.5G    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64
4.0K    /usr/local/lib64
8.0K    /usr/local/tmp
92K     /usr/local/share
236K    /usr/local/bin
9.5M    /usr/local/lib
4.0K    /usr/local/libexec
2.8G    /usr/local/
[root@db132 ~]#
复制代码

范例5-13、排除指定目录的案例。

复制代码
[root@db132 ~]#du -h --max-depth=2 /usr/local/ --exclude=/usr/local/share/
4.0K    /usr/local/games
4.0K    /usr/local/etc
4.0K    /usr/local/include
812K    /usr/local/python3.6/include
32K     /usr/local/python3.6/share
116K    /usr/local/python3.6/bin
315M    /usr/local/python3.6/lib
316M    /usr/local/python3.6
4.0K    /usr/local/scripts
4.0K    /usr/local/sbin
9.7M    /usr/local/src
368K    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/include
820K    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/man
24K     /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/support-files
20K     /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/docs
8.5M    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/share
2.1G    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/bin
410M    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64/lib
2.5G    /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64
4.0K    /usr/local/lib64
8.0K    /usr/local/tmp
80K     /usr/local/share/man
4.0K    /usr/local/share/info
4.0K    /usr/local/share/applications
92K     /usr/local/share
236K    /usr/local/bin
9.5M    /usr/local/lib
4.0K    /usr/local/libexec
2.8G    /usr/local/
[root@db132 ~]#
复制代码

5.6、date:显示与设置系统时间

5.6.1、命令详解

【功能说明】

  date命令用于显示当前的系统时间或设置系统时间。

【语法格式】

date [OPTION] [+FORMAT]
date [选项] [+日期格式]

【选项说明】

表5-6、date命令的参数选项及说明

参数选项 解释说明 参数选项 解释说明
OPTION
-d时间字符串 显示指定字符串所描述的时间,而非当前时间 -f时间文件 从日期文件中读入时间描述
-r文件 显示指定文件的最后修改时间 -s 日期时间 设置系统时间
-u 显示或设置UTC时间    
FORMAT日期格式
%% 输出字符% %a 星期名缩写(Tue代表星期二)
%A 星期名全称(Tuesday代表星期二) %b 月名缩写(Aug代表八月)
%B 月名全称(August) %c 日期和时间
%d 每月的第几天 %D 等于%m%d%y(08/18/15)
%e 每月的第几天 %F 完整日期格式(2015-08-18)
%g 年份的最后两位15 %G 年份(2015)
%h 月名缩写 %H 24小时制(00-23)
%I 12小时制(00-12) %j 一年的第几天(001-366)
%k 24小时(0-23) %l 12小时制(01-12)
%m 月份(01-12) %M 分(00-59)
%n 换行 %N 纳秒
%p 上午或下午(AM/PM) %P 上午或下午(am/pm)
%r 当前时区下的12小时制时间(02:30:27) PM %R 24小时制的时和分,等下与%H:%M
%s 秒数(1439876213) %S 秒数(00-60)
%t 输出制表符Tab %T 时间(14:30:50)
%u 星期,1代表周一 %U 一年中的第几周
%V 下一年的第几周 %w 一星期中的第几日(0-6)
%W 一年中的第几周 %x 日期
%X 时间(02:31:2 PM) %y 年份的最后两位
%Y 年份2015 %z 时区

范例

复制代码
[root@db132 ~]#date +'%F %T'
2020-01-17 03:00:05
[root@db132 ~]#

[root@db132 ~]#date
Fri Jan 17 03:00:56 Asia 2020
[root@db132 ~]#date +%F -d '100 day'
2020-04-26
[root@db132 ~]#
复制代码
复制代码
[root@db132 ~]#date +%F -d '24hour'
2020-01-18
[root@db132 ~]#date +%F -d '1440min'
2020-01-18
[root@db132 ~]#date +%F -d '-1440min'
2020-01-16
[root@db132 ~]#date +%F -d '-2440min'    
2020-01-15
[root@db132 ~]#
复制代码
[root@db132 ~]#date -s 20210708
Thu Jul  8 00:00:00 Asia 2021
[root@db132 ~]#date -s 14:30:20
Thu Jul  8 14:30:20 Asia 2021
[root@db132 ~]#date
Thu Jul  8 14:30:21 Asia 2021
[root@db132 ~]#

5.7、echo:显示一行文本

5.7.1、命令详解

【命令详解】

  echo命令能将指定的文本显示在Linux命令上。

表5-7、echo命令的参数选项及说明

参数选项 解释说明
-n 不要自动换行
-E 不解析转义字符(默认参数)
-e

若字符串中出现以下字符,则需要进行特别处理,而不会将它当成一般文字输出

\a 发出警告声

\b 删除前一个字符

\c 最后不加上换行符

\f 换行但光标依然停留在原来的位置

\n 换行且光标移至行首

\r 光标移至行首,但不换行

\t 掺入tab

\v 与\f相同

\'插入单引号

\"插入双引号

\nm插入nnn(八进制)所代表的的ASCII字符

5.7.2、使用范例

范例5-19、打印彩色输出

echo -e "\033[30m 黑色字 oldboy trainning \033[0m"
echo -e "\033[31m 红色字 oldboy trainning \033[0m"
echo -e "\033[32m 绿色字 oldboy trainning \033[0m"
echo -e "\033[33m 黄色字 oldboy trainning \033[0m"
echo -e "\033[34m 蓝色字 oldboy trainning \033[0m"
echo -e "\033[35m 紫色字 oldboy trainning \033[0m"
echo -e "\033[36m 天蓝字 oldboy trainning \033[0m"
echo -e "\033[37m 白色字 oldboy trainning \033[0m"

 

 

 

打印彩色背景效果

echo -e "\033[40;37m 黑色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[41;37m 红色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[42;37m 绿色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[43;37m 黄色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[44;37m 蓝色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[45;37m 紫色白字 welcome to oldboy trainning \033[0m"
echo -e "\033[46;37m 天蓝白字 welcome to oldboy trainning \033[0m"
echo -e "\033[47;37m 白色白字 welcome to oldboy trainning \033[0m"

 

 

5.8、watch:监视命令执行情况

5.8.1、命令详解

【功能说明】

  watch命令可以全屏的方式动态显示命令或程序的执行情况

【选项说明】

参数选项 解释使命
-n 命令执行的时间间隔,默认为2秒
-d 高亮显示命令结果的变动之处
-t 关闭watch命令的顶部显示的时间间隔、命令及当前时间的输出

5.8.2、使用范例

范例5-24、每个一秒高亮显示网络连接变化情况

watch -n 1 -d netstat -ant

5.9、which:显示命令的全路径

5.9.1、命令详解

【功能说明】

  which命令用于显示命令的全路径,我们常用这个命令来查找命令在哪里,which命令查找的范围是PATH环境变量的路径。

5.9.2、使用范例

[root@db132 ~]#which cd
/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python3.6/bin)
[root@db132 ~]#which mysql
/usr/bin/mysql
[root@db132 ~]#which -a mysql
/usr/bin/mysql
[root@db132 ~]#
posted @   davie2020  阅读(161)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示