189 8069 5689

linux过滤日志命令 linux过滤日志文件

linux查看日志的命令是?具体怎么用

Linux查看日志的命令有很多,比如tail、cat、tac、head、echo等,今天给大家介绍几种常用的方法:

站在用户的角度思考问题,与客户深入沟通,找到峨山县网站设计与峨山县网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名网站空间、企业邮箱。业务覆盖峨山县地区。

1、tail-实时查看变化的日志

命令格式:tail [必要参数][选择参数][文件]

-f:循环读取

-q:不显示处理信息

-v:显示详细的处理信息

-c数目:显示的字节数

-n行数:显示行数

-q, --quiet, --silent:从不输出给出文件名的首部

-s, --sleep-interval=S:与-f合用,表示在每次反复的间隔休眠S秒

2、head

跟tail相反,head是看日志的前多少行

head -n 10 test.log:查询日志文件中的前10行日志;

head -n -10 test.log:查询日志文件除了最后10行的其他所有日志;

3、cat-搜索关键字附近的日志

cat是由第一行到最后一行连续显示在屏幕上

最常用的命令:cat -n filename | grep "关键字"

cat app.log | grep -C 5 '关键字':显示日志里匹配字串那行以及前后5行;

cat app.log | grep -B 5 '关键字':显示匹配字串及前5行;

cat app.log | grep -A 5 '关键字':显示匹配字串及后5行;

4、more

more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。

more的语法:more 文件名

Linux日志截取利器——sed命令(亲测可用)

在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。

但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。

具体命令如下:

这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。

但是这条命令的使用有两个前提(很多网上的博主都没有提到)

第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改

第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效

更加通配的命令可以是这样, 使用 号*

这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了

使用 ,将截取到的内容输出到指定的文件中,方便进一步查看

ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤

linux自动清理日志的方法分享

1.做自动部署系统时精简的一个脚本,主要功能是清理所有目录的日志

2.根据给定日志目录,删除时间 结合crontab进行清理日志,清理完成后,后在/var/log/deltelog/ 生成按照月的清理日志

3.扩展,因为脚本采用mtime(最后修改时间)进行删除,所以可以适用于删除过期备份等,不受文件名称的限制

shell小窍门

find –type f –print 时会根据换行或者空格来输出查找的文件,在不同的sh下有不同的`反应,如果不做处理结合xargs 进行删除 更改操作,会有影响

所以需要增加 –print0 用 null来 作为边界符号,才敢结婚 xargs –o 来格式化输入

使用find 的时候 遵循最小结果集原则,find解析式从左到右,所有确保你在最左边的过滤符号能够过滤最大数据

你可以根据你的需要增加到crontab中

shell脚本

复制代码 代码如下:

#!/bin/sh

###########################

# log blog.duplicatedcode.com

# in_day_num: like 1 2 is 2day ago logs

# in_log_path like tomcat log home

###########################

in_log_path=${1}

in_day_num=${2}

tmp__log=/var/log/log/"`date +%Y%m`.log"

Log()

{

inner_num=${1}

#find log

echo "[`date`] start logs---" $tmp__log

find ${in_log_path} -type f -mtime ${inner_num} -print0 | xargs -0 rm -rf

echo "[`date`] end logs---" $tmp__log

}

init()

{

mkdir -p /var/log/log/

}

main()

{

init

if [ -z ${in_log_path} ];then

echo "[`date`] error log_path not init---" $tmp__log

return

fi

inner_day_num=+7

if [[ -n ${in_day_num} ]] [[ ${in_day_num} -ge 1 ]] ; then

${inner_day_num}=${in_day_num}

fi

Log ${inner_day_num}

}

main


文章标题:linux过滤日志命令 linux过滤日志文件
转载来于:http://jkwzsj.com/article/hhoiej.html

其他资讯