Linux日志截取利器 |
您所在的位置:网站首页 › linux系统日志命令 › Linux日志截取利器 |
在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。 但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。 具体命令如下: 这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。 但是这条命令的使用有两个前提(很多网上的博主都没有提到) 第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改 第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效 更加通配的命令可以是这样, 使用 号* 这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了 使用 ,将截取到的内容输出到指定的文件中,方便进一步查看 ps:在实际操作中,我们一般会在后面加grep命令做进一步的关键字过滤 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 last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行。 -d 指定记录文件。指定记录文件。将IP地址转换成主机名称。 -f 记录文件指定记录文件。 -n 显示列数或-显示列数设置列出名单的显示列数。 -R 不显示登入系统的主机名称或IP地址。 -x 显示系统关机,重新开机,以及执行等级的改变等信息 以下看所有的重启、关机记录 last | grep reboot last | grep shutdown history 列出所有的历史记录: [zzs@Linux] # history 只列出最近10条记录: [zzs@linux] # history 10 (注,history和10中间有空格) 使用命令记录号码执行命令,执行历史清单中的第99条命令 [zzs@linux] #!99 (!和99中间没有空格) 重复执行上一个命令 [zzs@linux] #!! 执行最后一次以rpm开头的'命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。) [zzs@linux] #!rpm 逐屏列出所有的历史记录: [zzs@linux]# history | more 立即清空history当前所有历史命令的记录 [zzs@linux] #history -c cat, tail 和 watch 系统所有的日志都在 /var/log 下面自己看(具体用途可以自己查,附录列出一些常用的日志) cat /var/log/syslog 等 cat /var/log/*.log tail -f 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /var/log/messages -d表示高亮不同的地方,-n表示多少秒刷新一次。 该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容, 这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。 除此之外还有more, less ,dmesg|more,这里就不作一一列举了,因为命令太多了,关键看个人喜好和业务需求.个人常用的就是以上那些 linux日志文件说明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/yw/7836304.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |