|
高士涛-学习日报 |
|||||||
|
姓名 |
高士涛 |
日期 |
2023/05/23 |
部门 |
云服务业务部 |
导师 |
王晓明 |
|
学习工作内容 |
|||||||
|
Shell命令参数传递实验 |
|||||||
|
实验目的: 1. 查询/var/log 下面多个日志文件的最后五行信息。 2. 熟悉shell 命令参数的传递方法 3. 熟悉xargs 、find -exec 的使用 实验环境: CentOS Linux release 7.9.2009 (Core) 实验说明: 由于/var/log 有多个log文件,数量不固定,log文件名字不固定,需要通过find 或 ls 命令找到日志文件, 然后再显示这些日志文件的最后5 行信息 。 为了快速查找查询/var/log 下面多个日志文件的最后五行信息,我们希望把找到的文件名作为参数传递给日志显示命令。 实验步骤: 方法一:xargs 实现多个参数传递: [root@hostgst ~]# cd /var/log/ [root@hostgst log]# find ./ -name "*.log" | xargs tail -n 5 输出显示:
试一下不换行输出: [root@hostgst log] # find ./ -name "*.log" | xargs
方法一解释 : find ./ -name "*.log" | xargs tail -n 5 find ./ -name "*.log" 输出当前目录与子目录中以log结尾的日志文件名
,并通过管道方式把文件名作为参数传递给 xargs tail -n 5。 xargs tail -n 5 接收管道,传递过来的文件名 , 并把这些文件名作为 tail -n 5 命令行的参数,并执行tail -n 5 这条命令
。 方法二:通过find 命令的 -exec 选项来显示多个日志文件的最后五行: [root@hostgst log]#
find ./ -name "*.log" -exec tail -n 5 {} \; 输出内容为:
方法二解释 : 该方法使用了find 命令的
-exec 选项, 即通过find 命令找到查找的文件后,调用tail -n 5 命令处理查找到的文件,其中 {} 表示 find 找到的结果,作为参数,传递给tail -n 5 这个命令。
其中
, “ \; ”规定在 -exec 后面表示该命令终结的的符号。 可以看到 find ./ -name
"*.log" -exec tail -n 5 {} \; 也输出了日志文件的最后五行,但是没有列出文件名,不便于一些场景下的问题分析。如果要加上文件名,可以加上 -print 选项: find ./ -name "*.log" -print -exec tail -n 5 {} \; 输出内容为:
实验拓展: 通过上述的两种方法, 列出/var/log
下面以log结尾的文件中含有 ERROR (不区分大小写)的内容。 find ./ -name "*.log" -print
-exec grep -i error {} \; | tail -n 15
在自己的虚拟机或服务器环境试试: find ./ -name "*.log" -print
-exec grep -i error {} \; 结果表明 /var/log 目录下的所有log文件目前都没有error相关内容。
那就列出 /var/log 下面以log结尾的文件中含有
WARNING(不区分大小写)的内容: find ./ -name "*.log" -print
-exec grep -i warning {} \;
|
|||||||
|
遗留问题 |
|||||||
|
|
|||||||
|
明日计划 |
|||||||
|
继续深入学习 |
|||||||