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

查看日志内容

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

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

相关推荐
2401_8504108329 分钟前
文件系统和日志管理
linux·运维·服务器
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
饮浊酒4 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu4 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求4 小时前
Linux系统性能调优技巧
linux
One_Blanks4 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell4 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼5 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler5 小时前
Linux系统-ubuntu系统安装
linux·运维·云计算