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

查看日志内容

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

基本用法

显示文件开头内容:

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 小时前
Linux 底层知识点 1
linux·运维·服务器
Escalating_xu3 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
忆挽篱笙歌4 小时前
环境变量,本地变量
linux·运维·服务器
databook6 小时前
使用命令行做描述性统计的技巧
数据分析·命令行
吹什么轩6 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
殷忆枫6 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
第404号工位6 小时前
手机到底有没有偷听我们?我抓包了 72 小时,抓到了真凶
linux·人工智能·架构
字节跳动开源7 小时前
ByteDance 2026 上半年 Linux 内核贡献回顾
linux·开源
小此方7 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
刚入门的大一新生7 小时前
Linux-进程池
linux·运维·服务器