LINUX核心命令实战总结六——信息显示与搜索文件命令
1.1 uname:显示系统信息
【功能说明】
命令uname用于显示系统相关信息,比如内核版本号、硬件架构。
【语法格式】
uname [OPTION]...
uname [选项]...
【选项说明】
命令uname的参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-a |
显示系统所有相关信息 |
-m |
显示计算机硬件架构 |
-n |
显示内核发行版本号(*) |
-r |
显示主机名称(*) |
-s |
显示内核名称 |
-v |
显示内核版本 |
-p |
显示主机处理器类型 |
-o |
显示操作系统名称 |
-i |
显示硬件平台 |
【使用范例】
基础范例
[root@web01 data]# uname -a Linux web01 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [root@web01 data]# uname -m x86_64 [root@web01 data]# uname -n web01 [root@web01 data]# uname -r 2.6.32-504.el6.x86_64 [root@web01 data]# uname -s Linux [root@web01 data]# uname -v #1 SMP Wed Oct 15 04:27:16 UTC 2014 [root@web01 data]# uname -p x86_64 [root@web01 data]# uname -o GNU/Linux [root@web01 data]# uname -i x86_64
5.2 hostname:显示或设置系统的主机名
【功能说明】
命令hostname用于显示或设置系统的主机名称,许多网络程序均用主机名来标识主机,如没有设置好主机名,则可能会导致网络服务不正常。
【语法格式】
hostname [option]
hostname [选项]
【选项说明】
命令hostname的参数及说明
参数选项 |
解释说明(带*的为重点) |
-a |
如果设置了主机别名,则可以用a选项来显示主机的别名 |
-i |
显示主机的IP地址,这个参数需要依赖DNS解析,比较慢,推荐使用下面的1选项 |
-I |
显示主机的所有IP地址,不依赖DNS解析,速度较快(*) |
-s |
显示短格式主机名 |
【使用范例】
显示主机名
[root@web01 data]# hostname
web01
临时修改主机名
[root@web01 data]# hostname A [root@web01 data]# logout [yanhuihuang@web01 ~]$ logout [root@web01 ~]# logout Last login: Sun Jan 21 21:07:47 2018 from 10.16.50.4 [root@A ~]#
永久修改主机名
[root@A ~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=web01
配置主机hosts解析
[root@A ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 web01 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.28.11.232 server 10.28.11.234 client 10.28.11.235 web01 10.28.11.236 web02
获取IP地址
root@A ~]# hostname -i 61.131.208.210 [root@A ~]# hostname -I 10.28.11.235 10.16.50.243
1.3 dmesg:系统启动异常诊断
【功能说明】
命令dmesg用于显示内核环形缓冲区的内容。
[root@A ~]# ll -h /var/log/dmesg -rw-r--r-- 1 root root 76K 1月 17 20:26 /var/log/dmesg
【语法格式】
dmesg [option]
dmesg [选项]
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-c |
显示信息后,清除环形缓冲区中的内容 |
-s bufsize |
设置缓冲区大小,默认16384 |
-n level |
显示消息等级 |
【使用范例】
查看内核环形缓冲区
[root@A ~]# dmesg|less Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version 2.6.32-504.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014 Command line: ro root=/dev/mapper/vg_root-lv_root rd_NO_LUKS rd_LVM_LV=vg_root/lv_root rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=vg_root/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet KERNEL supported cpus:
1.4 stat:显示文件或文件系统状态
【功能说明】
命令stat用于详细显示文件或文件系统的状态信息
【语法格式】
stat [OPTION]... FILE...
stat [选项]... 文件或目录...
【选项说明】
命令stat的参数及说明
参数选项 |
解释说明(带*的为重点) |
-f |
显示文件所在分区的文件系统状态而非文件状态 |
-c |
使用指定输出格式代替默认值(*) |
-t |
使用简洁格式输出 |
【使用范例】
查看文件属性
[root@A ~]# stat /etc/hosts File: "/etc/hosts" Size: 258 Blocks: 8 IO Block: 4096 普通文件 Device: fd00h/64768d Inode: 1310748 Links: 3 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-01-24 09:21:45.266816319 +0800 Modify: 2018-01-24 09:21:00.371391860 +0800 Change: 2018-01-24 09:21:00.379395431 +0800
查看系统属性
[root@A ~]# stat -f /etc/hosts File: "/etc/hosts" ID: d576dc0bc0d0a8fd Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 12868767 Free: 12315047 Available: 11659687 Inodes: Total: 3276800 Free: 3209810
1.5 du:统计磁盘空间使用情况
【功能说明】
命令du可以用于统计磁盘空间的使用情况。
【语法格式】
du [OPTION]... [FILE]...
du [选项]... [文件]...
【选项说明】
命令du的参数及说明
参数选项 |
解释说明(带*的为重点) |
-a |
显示所有文件大小 |
-h |
以人类可读的方式查看大小。 |
-s |
显示文件的总大小 |
--exclude=<目录或文件> |
略过指定的目录或文件 |
-X,--exclude-from=FILE |
从文件读取需要略过的目录或文件 |
--max-depth=N |
显示N级子目录的大小,当N=0时,该参数和-s参数的效果一样 |
【使用范例】
通过参数-a显示所有目录或文件所占空间
[root@A ~]# du -a 4 ./.bashrc 4 ./dir2 4 ./test1/d 4 ./test1/e 4 ./test1/b 4 ./test1/a 0 ./eth1 24 .
参数-s与-h的使用案例
[root@A ~]# du -s 296 . [root@A ~]# du -h 4.0K ./dir2 4.0K ./test1/d 4.0K ./test1/e 4.0K ./test1/b 4.0K ./test1/a 4.0K ./test1/g 4.0K ./test1/c 4.0K ./test1/f 32K ./test1 4.0K ./test 4.0K ./yhh/dir_1/dir_2.1 4.0K ./yhh/dir_1/dir_2.2 12K ./yhh/dir_1 4.0K ./yhh/dir_2/dir_2.1 4.0K ./yhh/dir_2/dir_2.2 12K ./yhh/dir_2 4.0K ./yhh/han 32K ./yhh 4.0K ./yanhuihuang1 4.0K ./dir1 4.0K ./yanhuihuang2 4.0K ./yan/yui/huihuang 8.0K ./yan/yui 12K ./yan 4.0K ./yanhuihuang 4.0K ./data 296K . [root@A ~]# du -sh 296K . [root@A ~]# du -sh /etc/hosts 4.0K /etc/hosts
显示指定层次的目录大小
[root@A ~]# du -h --max-depth=1 /usr/local 4.0K /usr/local/sbin 4.0K /usr/local/lib 4.0K /usr/local/lib64 92K /usr/local/share 4.0K /usr/local/games 4.0K /usr/local/include 4.0K /usr/local/src 4.0K /usr/local/etc 4.0K /usr/local/libexec 4.0K /usr/local/bin 132K /usr/local [root@A ~]# du -h --max-depth=2 /usr/local 4.0K /usr/local/sbin 4.0K /usr/local/lib 4.0K /usr/local/lib64 4.0K /usr/local/share/info 4.0K /usr/local/share/applications 80K /usr/local/share/man 92K /usr/local/share 4.0K /usr/local/games 4.0K /usr/local/include 4.0K /usr/local/src 4.0K /usr/local/etc 4.0K /usr/local/libexec 4.0K /usr/local/bin 132K /usr/local
排除指定目录的案例
[root@A ~]# du -h --max-depth=2 /usr/local --exclude=/usr/local/share 4.0K /usr/local/sbin 4.0K /usr/local/lib 4.0K /usr/local/lib64 4.0K /usr/local/games 4.0K /usr/local/include 4.0K /usr/local/src 4.0K /usr/local/etc 4.0K /usr/local/libexec 4.0K /usr/local/bin 40K /usr/local
1.6 date:显示与设置系统时间
【功能说明】
命令date用于显示当前的系统时间或设置系统时间。
【语法格式】
date [OPTION]... [+FORMAT]
date [选项]... [+日期格式]
【选项说明】
命令date的参数选项及说明
参数选项 |
解释说明(带*的为重点) |
OPTION参数选项 |
|
-d时间字符串 |
显示指定字符串所描述的时间,而非当前时间(*) |
-f时间文件 |
从日期文件中按行读入时间描述 |
-r文件 |
显示指定文件的最后修改时间 |
-s 日期时间 |
设置系统时间(*) |
-u |
显示或设置UTC时间 |
FORMAT日期格式 |
|
%y |
年份的后两位 |
%Y |
年份2018 |
%m |
月份(01-12) |
%d |
每月的第几天 |
%h |
月名缩写,等于%b |
%H |
24小时制 |
%M |
分(00-59) |
%S |
秒(00-59) |
%F |
完整的日期格式,等价于%Y-%m-%d(2018-01-22) |
%T |
时间,等于%H:%M:%S |
【使用范例】
[root@A ~]# date +%y 18 [root@A ~]# date +%Y 2018 [root@A ~]# date +%m 01 [root@A ~]# date +%d 24 [root@A ~]# date +%H 11 [root@A ~]# date +%M 05 [root@A ~]# date +%S 19 [root@A ~]# date +%F 2018-01-24 [root@A ~]# date +%T 11:05:31 [root@A ~]# date +%F%T 2018-01-2411:05:48 [root@A ~]# date +%F-%T 2018-01-24-11:05:53 [root@A ~]# date +%F/%T 2018-01-24/11:06:06
通过参数-d显示指定字符串所描述的时间示例
[root@A ~]# date +%F -d "-1day" 2018-01-23 [root@A ~]# date +%F -d "yesterday" 2018-01-23 [root@A ~]# date +%F -d "-2day" 2018-01-22 [root@A ~]# date +%F -d "+1day" 2018-01-25 [root@A ~]# date +%F -d "tomorrow" 2018-01-25 [root@A ~]# date +%F -d "+2day" 2018-01-26 [root@A ~]# date +%F -d "1month" 2018-02-24 [root@A ~]# date +%F -d "1year" 2019-01-24
通过参数-s设定时间
[root@A ~]# date -s 20180124 2018年 01月 24日 星期三 00:00:00 CST [root@A ~]# date -s "11:27:30 20180124" 2018年 01月 24日 星期三 11:27:30 CST
显示时间后换行,再显示日期
[root@A ~]# date +%T%n%D 11:29:16 01/24/18
1.7 echo:显示一行文本
【功能说明】
命令echo能将指定的文本显示在linux命令行上
【语法说明】
echo [SHORT-OPTION]... [STRING]...
echo [选项]... [文本]...
【选项说明】
命令echo参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-n |
不要自动换行(*) |
-E |
不解析转义(默认参数) |
-e |
若字符串中出现以下字符,则需要进行特别处理,而不会将它当成一般文字输出(*) |
【使用范例】
打印文本到屏幕输出
[root@A ~]# echo Hello world Hello world [root@A ~]# echo Hello world! Hello world! [root@A ~]# echo 'Hello world!' Hello world! [root@A ~]# echo "Hello world!" -bash: !": event not found [root@A ~]# echo "Hello world"! Hello world! [root@A ~]# echo "Hello world\!" Hello world\! [root@A ~]# echo -e "Hello\t world"! Hello world!
将单行文本输出到某个文件中
[root@A ~]# echo "hello world" >>hello.txt [root@A ~]# cat hello.txt hello world
使用-n参数
[root@A ~]# echo "yanhuihuang";echo "yanhui" yanhuihuang yanhui [root@A ~]# echo -n "yanhuihuang";echo "yanhui" yanhuihuangyanhui
打出彩色
[root@A ~]# echo -e "\033[30m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[30m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[31m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[32m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[33m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[34m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[35m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[36m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[37m yanhuihuang \033[0m" yanhuihuang
为打印效果
[root@A ~]# echo -e "\033[41;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[42;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[43;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[44;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[45;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[46;37m yanhuihuang \033[0m" yanhuihuang [root@A ~]# echo -e "\033[47;37m yanhuihuang \033[0m" yanhuihuang
打印变量内容
[root@A ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1.8 watch:监视命令执行情况
【功能说明】
命令watch可以全屏的方式动态显示命令或程序的执行情况
【语法格式】
watch [option] [command]
watch [选项] [命令]
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-n |
命令执行的间隔时间,默认为2s |
-d |
高亮显示命令结果的变动之处 |
-t |
关闭watch命令在顶部显示的时间间隔、命令及当前时间的输出 |
【使用范例】
每个1s高亮显示网络连接数变化情况
[root@A ~]# watch -n 1 -d netstat -ant Every 1.0s: netstat -ant Wed Jan 24 12:34:30 2018 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:51921 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
监视当前目录中的test.txt文化的变化
[root@A data]# echo 1 2 3 4 >>test.txt [root@A data]# watch cat test.txt Every 2.0s: cat test.txt Wed Jan 24 12:42:04 2018 1 2 3 4
参数-t不显示标题
[root@A data]# echo 1234 >>test.txt [root@A data]# watch -t cat test.txt 1234
1.9 which:显示命令的全路径
【功能说明】
命令which用于显示的全路径,which命令查找范围是PATH环境变量的路径
【语法格式】
which [options] programname [...]
which [选项] 命令名 [...]
【选项说明】
命令which的参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-a |
默认在PATH路径中由前往后查找命令,如果查找到了,就停止匹配。使用-a选项将遍历所有PATH路径,输出所有匹配项。 |
【使用范例】
查找指定命令的全路径
[root@A data]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@A data]# which date /bin/date [root@A data]# which which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which
参数-a的测试
[root@A data]# which -a cd /usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
5.10 whereis: 显示命令及其相关文件全路径
【功能说明】
命令whereis用于定位指定命令的可执行文件、源码文件及man帮助文件的路径。
【语法格式】
whereis [option] filename...
whereis [选项] 文件名...
【选项说明】
命令whereis参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-b |
查找可执行文件 |
-m |
查找man帮助文件 |
-s |
查找源代码文件 |
【使用范例】
[root@A data]# whereis cd cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz [root@A data]# whereis -b cd cd: [root@A data]# whereis -m cd cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz [root@A data]# whereis -s cd cd:
1.11 locate:快速定位文件路径
【功能说明】
Linux 系统里有一个名为mlocate.dbde 数据库文件,这个文件包含系统文件的文件名及对应的路径信息。
【语法格式】
locate [OPTION]... PATTERN...
locate [选项]... 文件名...
【使用说明】
参数选项 |
解释说明(带*的为重点) |
-U |
更新指定目录相关的数据库信息,默认是扫描整个系统,耗时较长,因此可以使用这个参数 |
-v |
显示命令的执行过程 |
【使用范例】
查看数据库
[root@A data]# ll -h /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 1.6M 1月 24 03:11 /var/lib/mlocate/mlocate.db
更新数据库
[root@A data]# locate yhh /yhh /data/dir2/yhh00 /data/dir2/yhh01 [root@A data]# ll -h /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 1.8K 1月 24 16:11 /var/lib/mlocate/mlocate.db
1.13思想:新手在工作中如何问问题不会被鄙视
如果因害怕而不敢问问题,可能会无法完成工作,甚至会失去成长机会;如果随意问问题又可能会被鄙视,甚至丢掉工作,我们该怎么问问题?
1、首先问身边的中低运维同事。
因为大家水平相差不会太大,同事可能不会觉得你所问的问题太过简单,也有可能他也不会,如果能给出解答则更好,就不用去问其他高级运维同事。
2、如果中低运维同事也不会,再去问身边的高级运维同事,因为中低运维都不会,所以高级运维就不会觉得你的问题太过简单了。
3、如果前面的人都不会,最后去问领导,首先领导可能不会觉得你的问题过于简单而留下不好的感觉,而且会知道你爱好思考。
但是和技术不太相关的问题,一入职就尽早问,比如:网站业务细节,网站架构,运维文档,运维规范、流程制度等。