第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 ~]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理 了,记录一下