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

查看日志内容

使用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

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

显示多个文件的内容:

bash 复制代码
cat file1 file2

按顺序显示 file1file2 的内容。

显示文件行数:

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 命令是一个用于查看文件头部内容的命令行工具。通常用于快速预览文件的开头部分。

基本用法

显示文件开头内容:

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 个字节。

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

相关推荐
安静的做,安静的学2 小时前
网络仿真工具Core环境搭建
linux·网络·网络协议
m0_742155433 小时前
linux ——waitpid介绍及示例
linux·c++·学习方法
hy____1234 小时前
动态内存管理
linux·运维·算法
龙之叶4 小时前
Android13源码下载和编译过程详解
android·linux·ubuntu
小猪佩奇TONY6 小时前
Linux 内核学习(4) --- devfreq 动态调频框架
linux·运维·学习
爱吃喵的鲤鱼7 小时前
Linux——网络(udp)
linux·网络·udp
千航@abc7 小时前
vim可视化模式的进阶操作
linux·编辑器·vim
小Hier8 小时前
linux系统centos版本上安装mysql5.7
linux·运维·centos
花落已飘8 小时前
RK3568 adb使用
linux·adb·rk3568
龙胖不下锅8 小时前
ubuntu k8s 1.31
linux·ubuntu·kubernetes