在 Linux 中查看巨大日志文件 10 个很好用的示例
查看巨大的日志文件以排除故障对于系统管理员和程序员来说是一项平凡的日常任务。
在本文中,让我们使用 10 个很好用的示例来回顾如何有效地查看和操作巨大的日志文件。
示例 1:使用 sed 命令显示文件的特定行(基于行号)
仅查看行号提到的特定行。
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed : sed 命令,默认打印所有行。
- -n :抑制输出。
- -e CMD : 要执行的命令
- Xp:打印行号 X
- Yp:打印行号 Y
- FILENAME :要处理的文件的名称。
下面提到的示例将从系统日志中打印第 120、145、1050 行。
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog
在下面的示例中,您可以查看 var/log/cron 从第 101 行到 110 行的内容。
- M - 起始行号
- N – 结束行号
Syntax: head -n N FILENAME
$ head -n 15 /var/log/maillog
示例 2:使用 head 命令显示文件的前 N 行
此示例仅显示 /var/log/maillog 文件的前 15 行。将 15 更改为 10 以显示日志文件的前 10 行。
Syntax: head -n -N FILENAME
$ head -n -250 /var/log/secure
示例 3:使用 head 命令忽略文件的最后 N 行
此示例显示如何忽略最后 N 行,并仅显示文件顶部的剩余行。
以下示例将显示 /var/log/secure 中除最后 250 行之外的所有行。
语法:head -n -N 文件名
$ head -n -250 /var/log/secure
示例4:使用tail命令显示文件的最后N行
此示例仅显示 /var/log/messages 文件的最后 50 行。将 50 更改为 100 以显示日志文件的最后 100 行。
Syntax: tail -n N FILENAME
$ tail -n 50 /var/log/messages
示例 5:使用 tail 命令忽略文件的前 N-1 行
此示例显示如何忽略前 N-1 行并仅显示其余行。
以下示例忽略了 /etc/xinetd.conf 的前四行,其中仅包含注释。
Syntax: tail -n +N FILENAME
$ tail -n +5 /etc/xinetd.conf
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
示例6:使用tail命令实时查看不断增长的日志文件
这可能是系统管理员最常用的命令之一。要查看不断增长的日志文件并仅查看较新的内容,请使用 tail -f ,如下所示。
以下示例实时显示 /var/log/syslog 命令的内容。
Syntax: tail -f FILENAME
$ tail -f /var/log/syslog
示例 7:使用 head 和 tail 命令显示文件的特定行(基于行号)
下面的示例将显示 /var/log/anaconda.log 文件的第 101 – 110 行
- M - 起始行号
- N – 结束行号
Syntax: cat file | tail -n +N | head -n (M-N+1)
$ cat /var/log/anaconda.log | tail -n +101 | head -n 10
- cat :将整个文件打印到标准输出。
- tail -n +101 :忽略给定行号之前的行,然后在给定行号之后开始打印行。
- head -n 10 :打印前 10 行,即 101 到 110 并忽略其余行。
示例 8:显示匹配模式的行,以及匹配后的几行。
以下示例显示与 /var/log/dmesg 中的“Initializing CPU”匹配的行以及该匹配之后的 5 行。
# grep "Initializing CPU#1" /var/log/dmesg
Initializing CPU#1
[Note: The above shows only the line matching the pattern]
# grep -A 5 "Initializing CPU#1" dmesg
Initializing CPU#1
Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982)
CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000
CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000
monitor/mwait feature present.
CPU: L1 I cache: 32K, L1 D cache: 32K
[Note: The above shows the line and 5 lines after the pattern matching]
正如我们之前的 grep 命令文章中所解释的,可以进行以下操作。
- 查看由模式标识的特定行,这是 grep 的默认功能。
- 仅查看匹配的字符。
- 使用 -A 选项在匹配后查看 N 行。
- 使用 -B 选项查看匹配前的 N 行。
- 使用 -C 选项查看比赛周围的 N 行。
示例 9:显示文件中的特定字节。
以下示例说明如何显示文件的前 40 个字节或最后 30 个字节。
显示系统日志的前 40 个字节。
$ head -c40 /var/log/syslog
显示来自 syslog 的最后 30 个字节。
$ tail -c30 /var/log/syslog
示例 10:查看压缩日志文件
在特定时间之后,所有系统日志文件都将被轮换和压缩。您可以即时解压缩它,并将输出通过管道传输到另一个 unix 命令以查看文件,如下所述。
- 显示压缩文件的前 N 行。
$ zcat file.gz | head -250
- 显示压缩文件的最后 N 行。
$ zcat file.gz | tail -250
- 忽略压缩文件的最后 N 行。
$ zcat file.gz | head -n -250
- 忽略压缩文件的前 N 行。
$ zcat file.gz | tail -n +250
- 查看与模式匹配的行
$ zcat file.gz | grep -A2 'error'
- 查看由行号标识的特定范围的行。
$ zcat file.gz | sed -n -e 45p -e 52p
- 点赞
- 收藏
- 关注作者
评论(0)