命令行查看服务(接口)日志命令汇总

查看日志内容

使用cat命令

查看整个日志文件的内容

cat /path/to/logfile.log

使用tail命令

查看文件的末尾

tail -n 100 /path/to/logfile.log  # 显示最后100行日志

实时监控日志文件

tail -f /path/to/logfile.log     # 实时显示新增的日志

使用head命令

查看文件的开头部分

head -n 20 /path/to/logfile.log  # 显示文件的前20行

使用 less 命令

less 是一个强大的终端分页查看器,用于浏览文本文件,特别是大型文件。

打开文件

less /var/log/nginx/access.log

可以使用箭头键上下滚动,q 键退出。

分页滚动

  • 向下滚动一页:Space 或 Page Down
  • 向上滚动一页:b 或 Page Up

搜索

/pattern:搜索模式为 pattern 的文本,按 n 键移动到下一个匹配项,按 N 键移动到上一个匹配项。

按 / 键,然后输入要搜索的字符串,按回车。例如,搜索包含 “404” 的行:

/404

跳转至行号

: 键,然后输入行号,按回车跳转。

退出

q 键:退出 less

搜索日志内容

使用 grep

查找所有包含“error”字符串的日志记录

grep error /var/log/nginx/access.log

查找所有包含“error” 和 “张三”字符串的日志记录

grep error /var/log/nginx/access.log | grep 张三 /var/log/nginx/access.log

使用正则搜索

grep -E "error|张三" /var/log/nginx/access.log

要查找所有包含[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}字符串的日志记录

grep -E '[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}' /var/log/nginx/access.log

使用sed

sed命令另一个强大的文本处理命令,可以用于对日志文件进行过滤和替换。

查找所有包含“error”字符串的日志记录,并将“error”字符串替换为“warn”

sed 's/error/warn/g' /var/log/nginx/access.log

分析日志内容

使用awk

一般在进行简单的分析统计时使用

要查找所有包含“error”字符串的日志记录,并将IP地址和错误消息打印到标准输出

awk '/error/ {print $1,$9}' /var/log/nginx/access.log

打印10-20行

awk 'NR>=10 && NR<=20' /var/log/debug.log

计算请求返回码为404的次数

awk '$9 == 404 {count++} END {print "404 Count:", count}' /var/log/nginx/access.log

统计访问次数最多的IP

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)是一个用于连接文件并打印到标准输出的命令行工具。

基本用法

显示文件内容:

cat filename

在终端中显示文件 filename 的内容。

连接多个文件:

cat file1 file2 > combined_file

file1file2 的内容连接起来,并将结果输出到 combined_file 中。

显示多个文件的内容:

cat file1 file2

按顺序显示 file1file2 的内容。

显示文件行数:

cat -n filename

显示文件 filename 的内容,并在每行前显示行号。

标准输入:

cat

在不指定文件的情况下,cat 将等待用户的输入,并将其输出到标准输出。

重定向:

cat < input_file

使用 < 运算符从 input_file 中读取内容,并将其输出到标准输出。

追加到文件:

cat file1 >> existing_file

file1 的内容追加到 existing_file 的末尾。

制作备份:

cat filename > filename_backup

创建文件 filename 的备份副本 filename_backup

显示特殊字符:

cat -A filename

显示文件 filename 的内容,并使用 ^ 符号表示控制字符,以及 $ 符号表示行尾。

tail

tail 命令是一个用于查看文件末尾内容的命令行工具。

基本用法

显示文件末尾内容:

tail filename

默认情况下,tail 显示文件 filename 的最后 10 行内容。

指定显示行数:

tail -n 20 filename

使用 -n 选项指定显示的行数,例如显示最后 20 行。

实时监控文件变化:

tail -f filename

使用 -f 选项实时跟踪文件的变化,当文件内容发生变化时,tail 会持续输出新的内容。

显示文件开始内容:

tail -n +11 filename

使用 -n +N 选项显示从第 N 行开始的内容,例如从第 11 行开始。

显示文件末尾的字节数:

tail -c 100 filename

使用 -c 选项指定显示的字节数,例如显示最后 100 个字节。

显示多个文件:

tail file1 file2

如果指定多个文件,tail 会显示它们的末尾内容,并在每个文件输出之前加上文件名。

显示文件末尾的 N 个块:

tail -n 5 -f filename

使用 -n-f 同时,tail 会显示文件末尾的最后 5 个块,并实时跟踪文件的变化。

递归显示目录下所有文件的末尾内容:

tail -r /path/to/directory

使用 -r 选项递归显示目录下所有文件的末尾内容。

head

head 命令是一个用于查看文件头部内容的命令行工具。通常用于快速预览文件的开头部分。

基本用法

显示文件开头内容:

head filename

默认情况下,head 显示文件 filename 的开头 10 行内容。

指定显示行数:

head -n 20 filename

使用 -n 选项指定显示的行数,例如显示开头的 20 行。

显示文件开头的字节数:

head -c 100 filename

使用 -c 选项指定显示的字节数,例如显示开头的 100 个字节。

显示多个文件:

head file1 file2

如果指定多个文件,head 会显示它们的开头内容,并在每个文件输出之前加上文件名。

显示文件开头的 N 个块:

head -n 5 -c 1K filename

使用 -n-c 同时,head 会显示文件开头的最前面 5 个块,每个块的大小为 1K(千字节)。

递归显示目录下所有文件的开头内容:

head -r /path/to/directory

使用 -r 选项递归显示目录下所有文件的开头内容。

显示特定文件类型的头部信息:

head -c 256 $(find /path/to/files -type f -name "*.txt" -print)

使用 find 命令找到所有以 “.txt” 结尾的文件,并使用 head 显示它们的开头 256 个字节。

感谢你花费宝贵的时间阅读本文,如果本文给了你一点点帮助或者启发,还请点赞,关注支持一下,作者会持续与大家分享更多干货

原文链接:https://juejin.cn/post/7316844192603881491 作者:CoderLiu

(0)
上一篇 2023年12月26日 下午5:15
下一篇 2023年12月27日 上午10:05

相关推荐

发表回复

登录后才能评论