1、实时查看日志
tail -f /path/to/logfile.log
解释:tail -f 命令用于实时监听并显示日志文件的最新内容,随着日志的增长,它会自动更新显示。
2、 查看历史日志的最后几行
tail -n 20 /path/to/logfile.log
解释:tail -n 参数后跟数字表示要显示文件末尾的行数,此处为显示最后20行。
3、 根据关键词过滤日志
grep "keyword1" /path/to/logfile.log
grep -E "keyword1|keyword2" /path/to/logfile.log
解释:第一行命令用于查找包含keyword1的日志行,第二行命令使用-E选项支持正则表达式,查找包含keyword1或keyword2的日志行。
4、 查询指定路径下的所有日志文件
find /path/to/logs -type f -name "*.log" -exec grep "search_term" {} \;
解释:find命令结合 -type f 查找指定目录下的所有文件类型为普通文件的日志文件,并通过-name "*.log"匹配.log扩展名的日志文件,然后执行grep命令在这些文件中查找特定关键词。
5、 当日志文件过大时,查看开头部分
head -n 20 /path/to/large.log
解释:head -n 用于显示文件开头的若干行,此处显示前20行。
6、 筛选出指定时间范围内的日志
awk '/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/ && ($1 >= "start_time") && ($1 <= "end_time")' /path/to/logfile.log
解释:这需要用到awk命令,配合正则表达式匹配包含日期时间格式的行,并与给定的时间范围比较。替换 start_time 和 end_time 为实际的时间戳,例如 "2023-03-26 10:30:00"。
7、 分页查看日志
less /path/to/logfile.log
解释:less 命令允许你逐屏浏览日志,可以使用空格键翻页,上下箭头移动光标,/keyword 进行关键字搜索,q 键退出。
或者
more /path/to/logfile.log
解释:more 命令也是分页查看工具,但功能相对较少,同样支持逐屏查看和按q键退出。
8、 将查询到的日志输出到另一个文件
grep "error" /path/to/app.log > temp_errors.txt
解释:此命令将包含error关键词的日志行重定向到名为temp_errors.txt的新文件中。
9、 查看过去某一时间段的日志
若日志格式包含时间戳,可以根据时间戳筛选:
sed -n "/start_time/,/end_time/p" /path/to/logfile.log
解释:sed命令在这里可以用来提取包含起始时间和结束时间之间日志,但请注意,这个例子依赖于日志行中的具体时间格式是否符合start_time和end_time的形式。
10、 使用journalctl命令查看systemd管理的服务的日志
journalctl -u service_name
使用journalctl命令查看systemd管理的服务的日志。
以上命令均需根据实际情况调整路径和时间格式等参数。掌握这些基础命令可以快速定位和分析日志文件,提高工作效率。在处理大型日志文件时,尽量使用管道和流式处理以减少内存消耗。如果日志文件非常庞大,还可以考虑使用logrotate工具进行日志分割管理以及使用zgrep或zless等命令处理压缩过的日志文件。
11、删除7天之前的所有日志文件
find /var/log -name "*.log" -type f -mtime +7 -exec rm -f {} \;