查看日志内容
使用cat命令
查看整个日志文件的内容
bash
cat /path/to/logfile.log
使用tail命令
查看文件的末尾
bash
tail -n 100 /path/to/logfile.log # 显示最后100行日志
实时监控日志文件
bash
tail -f /path/to/logfile.log # 实时显示新增的日志
使用head命令
查看文件的开头部分
bash
head -n 20 /path/to/logfile.log # 显示文件的前20行
使用 less 命令
less 是一个强大的终端分页查看器,用于浏览文本文件,特别是大型文件。
打开文件
bash
less /var/log/nginx/access.log
可以使用箭头键上下滚动,q 键退出。
分页滚动
- 向下滚动一页:Space 或 Page Down
- 向上滚动一页:b 或 Page Up
搜索
/pattern:搜索模式为 pattern 的文本,按 n 键移动到下一个匹配项,按 N 键移动到上一个匹配项。
按 / 键,然后输入要搜索的字符串,按回车。例如,搜索包含 "404" 的行:
bash
/404
跳转至行号
: 键,然后输入行号,按回车跳转。
退出
q 键:退出 less
搜索日志内容
使用 grep
查找所有包含"error"字符串的日志记录
bash
grep error /var/log/nginx/access.log
查找所有包含"error" 和 "张三"字符串的日志记录
bash
grep error /var/log/nginx/access.log | grep 张三 /var/log/nginx/access.log
使用正则搜索
bash
grep -E "error|张三" /var/log/nginx/access.log
要查找所有包含[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}
字符串的日志记录
bash
grep -E '[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}' /var/log/nginx/access.log
使用sed
sed命令另一个强大的文本处理命令,可以用于对日志文件进行过滤和替换。
查找所有包含"error"字符串的日志记录,并将"error"字符串替换为"warn"
bash
sed 's/error/warn/g' /var/log/nginx/access.log
分析日志内容
使用awk
一般在进行简单的分析统计时使用
要查找所有包含"error"字符串的日志记录,并将IP地址和错误消息打印到标准输出
bash
awk '/error/ {print $1,$9}' /var/log/nginx/access.log
打印10-20行
bash
awk 'NR>=10 && NR<=20' /var/log/debug.log
计算请求返回码为404的次数
bash
awk '$9 == 404 {count++} END {print "404 Count:", count}' /var/log/nginx/access.log
统计访问次数最多的IP
bash
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 5
解释一下这段命令:
awk '{print $1}' /var/log/nginx/access.log
:
使用awk命令提取访问日志中的第一个字段,即IP地址。得到一个包含所有IP地址的列表。
sort
:
对提取的IP地址列表进行排序,以便相同的IP地址相邻。
uniq -c
:
使用uniq -c命令对排序后的IP地址进行去重并计数,即统计每个IP地址出现的次数。
sort -nr
:
对计数后的结果进行逆序排序,以便最频繁出现的IP地址排在前面。
head -n 5
:
使用head命令只显示前5行,即最频繁出现的前5个IP地址。
相关命令和工具
cat
cat
(concatenate)是一个用于连接文件并打印到标准输出的命令行工具。
基本用法
显示文件内容:
bash
cat filename
在终端中显示文件 filename
的内容。
连接多个文件:
bash
cat file1 file2 > combined_file
把 file1
和 file2
的内容连接起来,并将结果输出到 combined_file
中。
显示多个文件的内容:
bash
cat file1 file2
按顺序显示 file1
和 file2
的内容。
显示文件行数:
bash
cat -n filename
显示文件 filename
的内容,并在每行前显示行号。
标准输入:
bash
cat
在不指定文件的情况下,cat
将等待用户的输入,并将其输出到标准输出。
重定向:
bash
cat < input_file
使用 <
运算符从 input_file
中读取内容,并将其输出到标准输出。
追加到文件:
bash
cat file1 >> existing_file
把 file1
的内容追加到 existing_file
的末尾。
制作备份:
bash
cat filename > filename_backup
创建文件 filename
的备份副本 filename_backup
。
显示特殊字符:
bash
cat -A filename
显示文件 filename
的内容,并使用 ^
符号表示控制字符,以及 $
符号表示行尾。
tail
tail
命令是一个用于查看文件末尾内容的命令行工具。
基本用法
显示文件末尾内容:
bash
tail filename
默认情况下,tail
显示文件 filename
的最后 10 行内容。
指定显示行数:
bash
tail -n 20 filename
使用 -n
选项指定显示的行数,例如显示最后 20 行。
实时监控文件变化:
bash
tail -f filename
使用 -f
选项实时跟踪文件的变化,当文件内容发生变化时,tail
会持续输出新的内容。
显示文件开始内容:
bash
tail -n +11 filename
使用 -n +N
选项显示从第 N 行开始的内容,例如从第 11 行开始。
显示文件末尾的字节数:
bash
tail -c 100 filename
使用 -c
选项指定显示的字节数,例如显示最后 100 个字节。
显示多个文件:
bash
tail file1 file2
如果指定多个文件,tail
会显示它们的末尾内容,并在每个文件输出之前加上文件名。
显示文件末尾的 N 个块:
bash
tail -n 5 -f filename
使用 -n
和 -f
同时,tail
会显示文件末尾的最后 5 个块,并实时跟踪文件的变化。
递归显示目录下所有文件的末尾内容:
bash
tail -r /path/to/directory
使用 -r
选项递归显示目录下所有文件的末尾内容。
head
head
命令是一个用于查看文件头部内容的命令行工具。通常用于快速预览文件的开头部分。
基本用法
显示文件开头内容:
bash
head filename
默认情况下,head
显示文件 filename
的开头 10 行内容。
指定显示行数:
bash
head -n 20 filename
使用 -n
选项指定显示的行数,例如显示开头的 20 行。
显示文件开头的字节数:
bash
head -c 100 filename
使用 -c
选项指定显示的字节数,例如显示开头的 100 个字节。
显示多个文件:
bash
head file1 file2
如果指定多个文件,head
会显示它们的开头内容,并在每个文件输出之前加上文件名。
显示文件开头的 N 个块:
bash
head -n 5 -c 1K filename
使用 -n
和 -c
同时,head
会显示文件开头的最前面 5 个块,每个块的大小为 1K(千字节)。
递归显示目录下所有文件的开头内容:
bash
head -r /path/to/directory
使用 -r
选项递归显示目录下所有文件的开头内容。
显示特定文件类型的头部信息:
bash
head -c 256 $(find /path/to/files -type f -name "*.txt" -print)
使用 find
命令找到所有以 ".txt" 结尾的文件,并使用 head
显示它们的开头 256 个字节。
感谢你花费宝贵的时间阅读本文,如果本文给了你一点点帮助或者启发,还请点赞,关注支持一下,作者会持续与大家分享更多干货。