Linux-查看清理日志方法总结
1. cat
1.1 介绍
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
1.2 命令
语法格式:
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明:
- -n 或 --number:由 1 开始对所有输出的行数编号。
- -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
- -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
- -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
- -E 或 --show-ends : 在每行结束处显示 $。
- -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
- -A, --show-all:等价于 -vET。
- -e:等价于"-vE"选项;
- -t:等价于"-vT"选项;
1.2.1 cat test.log : 查看test.log内容。
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/8fce39e24b7d44e499b27f501d2f202c@blob.png)
1.2.2 cat -n test.log,查看test.log文件的内容,并且由1开始对所有输出行进行编号。(包括空白行)
1.2.3 cat -b test.log ,用法和 -n 差不多,但是不对空白行编号。
1.2.4 cat -s test.log,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。
1.2.5 cat -e test.log,在输出内容的每一行后面加一个$符号。(包括空白行)
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/14e89d874453402da8211414361b9d24@blob.png)
1.2.6 cat test.log test1.log,同时显示test.log和test1.log文件内容,注意文件名之间以空格分隔,而不是逗号。
1.2.7 cat -n test.log > test2.log,对test.log文件中每一行加上行号后然后写入到test2.log中,会覆盖原来的内容,文件不存在则创建它。
1.2.8 cat -n test.log >> test1.log,对f1.txt文件中每一行加上行号后然后追加到test3.log中去,不会覆盖原来的内容,文件不存在则创建它。
1.3 使用示例
项目中比较大的日志一般查询日志配合grep命令使用
命令: cat filename | grep 关键字 -C10 -C:显示前后多少行 -A:显示后多少行 -B:显示前多少行
1.3.1 查找 日志中含有Exception关键字的前后10行
cat tarzan-mes.2022-07-08.10-1.log | grep "Exception" -C 10
1.3.2 查找 日志中含有Exception关键字的前后10行并输出到一个新的文件中
cat tarzan-mes.2022-07-08.10-1.log | grep "Exception" -C 10 > exception.log
2. more
2.1 介绍
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能
2.2 命令
2.2.1 基本命令
命令语法:
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
- -num 一次显示的行数
- -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
- -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
- -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
- -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
- -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
- -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
- -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
- +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
- +num 从第 num 行开始显示
- fileNames 欲显示内容的文档,可为复数个数
2.2.2 操作命令
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
- V 调用vi编辑器
- !命令 调用Shell,并执行命令
- q 退出more
2.3 使用示例
2.3.1 一页显示100行记录
more -100 tarzan-mes.2022-07-08.13-1.log
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/7d5e6fe818e94683ab06791ed06e7f1b@blob.png)
2.3.2 使用提示画面的方式查看每页显示5行记录
more -d -5 tarzan-mes.2022-07-08.13-1.log
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/7e2c2161ee3e47b7a214a821c9858d11@blob.png)
2.3.3 使用提示画面的方式查看从第100行查看日志每页显示10行记录,并搜索“Exception”关键字的内容
more -d -10 tarzan-mes.2022-07-08.13-1.log
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/b48d60fac7214713acd9b5a05bf0c8cd@blob.png)
3.tail
3.1 描述
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
3.2 命令
命令语法
tail [参数] [文件]
参数说明:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
- --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
3.3 使用示例
3.3.1 显示 notes.log 文件的最后 10 行
tail notes.log # 默认显示最后 10 行
3.3.2 要跟踪名为 notes.log 的文件的增长情况
tail -f notes.log
备注:此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
3.3.3 显示文件 notes.log 的内容,从第 20 行至文件末尾
tail -n +20 notes.log
3.3.4 显示文件 notes.log 的最后 10 个字符
tail -c 10 notes.log
4. split
4.1 描述
Linux split命令用于将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
4.2 命令
命令语法:
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参数说明:
- -<行数> : 指定每多少行切成一个小文件
- -b<字节> : 指定每多少字节切成一个小文件
- --help : 在线帮助
- --version : 显示版本信息
- -C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
- [输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
4.3 使用示例
4.3.1. 默认 split命令分割文件成每个文件1000行,并且文件名依次为 [前缀]aa,[前缀]ab,[前缀]ac等,默认的前缀是X,每个文件的行数为1000行
split app.log
4.3.2. 将app.out文件每200兆分割成一个文件并命名未app.log+数字方式结尾
split -d -b 200m app.out app.log
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/340787c604744387b01740fc0ecf08e1@blob.png)
![image](https://zkc7n-knowledgebase-service.obs.cn-east-3.myhuaweicloud.com:443/0/CHOERODON-HUAWEI/c51b0951dba64d479a12946a229dfea2@blob.png)
5. 其它方式
5.1 vi 命令
这是个编辑命令,但也类似于more的使用方式可以用来查看搜索日志中的关键字
命令格式:vi 文件名
vi app.log
5.2 sed 命令中的搜索
命令格式:sed -n '/开始时间/,/结束时间/p' > 输出的文件名
sed -n '/2019-04-22/,/2019-04-22 /p' log.log > bbb.txt
6. 日志清理
6.1 删除指定时间前的文件
find ./ -name *.log -mtime +7| xargs rm -rf
6.2 echo 清理
echo "" > app.out
备注: 该方式适合控制台输出,像tomcat启动的catlina.out日志清理或者java -jar 启动指定log文件的清理。
本文来自博客园,作者:风光小磊,转载请注明原文链接:https://www.cnblogs.com/lei-z/p/16467198.html