如果您在Linux环境中花费大量时间,则必须知道日志文件的位置以及每个日志文件中包含的内容。
当系统运行平稳时,请花一些时间来学习和理解各种日志文件的内容,这将在出现危机时为您提供帮助,并且您必须查看日志文件以找出问题所在。
/etc/rsyslog.conf控制某些日志文件中的内容。 例如,以下是rsyslog.conf中/ var / log / messages的条目。
$ grep "/var/log/messages" /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none
/var/log/messages
在上面的输出中,
- * .info表示将记录所有类型为INFO的日志。
- mail.none,authpriv.none,cron.none指示这些错误消息不应记录到/ var / log / messages文件中。
- 您还可以指定* .none,这表示将不记录任何日志消息。
以下是/ var / log /目录下的20个不同的日志文件。 其中一些日志文件是特定于分发的。 例如,您将在基于Debian的系统上(例如,在Ubuntu上)看到dpkg.log 。
- / var / log / messages –包含全局系统消息,包括系统启动期间记录的消息。 在/ var / log / messages中记录了几件事,包括mail,cron,daemon,kern,auth等。
- / var / log / dmesg –包含内核环形缓冲区信息。 系统启动时,它将在屏幕上打印一些消息,以显示有关内核在引导过程中检测到的硬件设备的信息。 这些消息在内核环形缓冲区中可用,并且每当新消息到来时,旧消息就会被覆盖。 您也可以使用dmesg命令查看此文件的内容。
- /var/log/auth.log –包含系统授权信息,包括使用的用户登录名和身份验证机制。
- /var/log/boot.log –包含系统启动时记录的信息
- /var/log/daemon.log –包含由系统上运行的各种后台守护程序记录的信息
- /var/log/dpkg.log –包含使用dpkg命令安装或删除软件包时记录的信息
- /var/log/kern.log –包含内核记录的信息。 帮助您解决定制内核的问题。
- / var / log / lastlog –显示所有用户的最新登录信息。 这不是一个ascii文件。 您应该使用lastlog命令查看此文件的内容。
- / var / log / maillog /var/log/mail.log –包含来自系统上运行的邮件服务器的日志信息。 例如,sendmail将有关所有已发送项目的信息记录到此文件中
- /var/log/user.log –包含有关所有用户级别日志的信息
- /var/log/Xorg.x.log –记录来自X的消息
- /var/log/alternatives.log –更新替代方法的信息记录到此日志文件中。 在Ubuntu上,update-alternatives维护确定默认命令的符号链接。
- / var / log / btmp ( lastb命令;显示所有错误的登录尝试) / var / log / wtmp (显示自创建文件以来所有已登录和退出的用户… 最后一个命令;尝试登录)–此文件包含有关登录失败的信息尝试。 使用最后一个命令查看btmp文件。 例如,“ last -f / var / log / btmp | 更多 ”
- / var / log / cups –所有与打印机和打印相关的日志消息
- /var/log/anaconda.log –安装Linux时,所有与安装相关的消息都存储在此日志文件中
- /var/log/yum.log –包含使用yum安装软件包时记录的信息
- / var / log / cron –每当cron守护程序(或anacron)启动cron作业时,它将在该文件中记录有关cron作业的信息
- / var / log / secure –包含与身份验证和授权特权有关的信息。 例如,sshd将所有消息记录在这里,包括登录失败。
- / var / log / wtmp或/ var / log / utmp –包含登录记录。 使用wtmp可以找出谁登录了系统。 who命令使用此文件显示信息。
- / var / log / faillog-包含用户失败的登录尝试次数。 使用faillog命令显示此文件的内容。
除了上述日志文件以外, / var / log目录还可能包含以下子目录,具体取决于系统上运行的应用程序。
- / var / log / httpd / (或) / var / log / apache2 –包含apache Web服务器access_log和error_log
- / var / log / lighttpd / -包含简单的HTTPD access_log和error_log
- / var / log / conman / – ConMan客户端的日志文件。 conman连接由conmand守护程序管理的远程控制台。
- / var / log / mail / –此子目录包含来自邮件服务器的其他日志。 例如,sendmail将收集的邮件统计信息存储在/ var / log / mail / statistics文件中
- / var / log / prelink / –预链接程序修改共享库和链接的二进制文件以加快启动过程。 /var/log/prelink/prelink.log包含有关由预链接修改的.so文件的信息。
- / var / log / audit / –包含Linux审核守护程序( auditd )存储的日志信息。
- / var / log / setroubleshoot / – SELinux使用setroubleshootd(SE故障排除后台程序)来通知文件安全上下文中的问题,并将这些信息记录在此日志文件中。
- / var / log / samba / –包含samba存储的日志信息,该信息用于将Windows连接到Linux。
- / var / log / sa / –包含sysstat软件包收集的每日sar文件。
- / var / log / sssd / –由系统安全服务守护程序使用,该守护程序管理对远程目录和身份验证机制的访问。
查看大量日志文件以解决问题是系统管理员和程序员的日常工作。 在本文中,让我们回顾如何使用10个很棒的示例来有效地查看和操作大型日志文件。
示例1:使用sed命令显示文件的特定行(基于行号)
仅查看行号提及的特定行。
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed:sed命令,默认情况下将打印所有行。
- -n:抑制输出。
- -e CMD:要执行的命令
- Xp:打印行号X
- Yp:打印行号Y
- FILENAME:要处理的文件名。
下面提到的示例将从syslog打印行120、145、1050。
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog
在以下示例中,您可以从行号101到110查看var / log / cron的内容。
- M –起始行号
- N –结束行号
Syntax: sed -n M,Np FILENAME
$ sed -n 101,110p /var/log/cron
示例2:使用head命令显示文件的前N行
本示例仅显示/ var / log / maillog文件的前15行。 将15更改为10以显示日志文件的前10行。
语法: head -n N FILENAME
$ head -n 15 /var/log/maillog
示例3:使用head命令忽略文件的最后N行
本示例说明如何忽略最后N行,并仅显示文件顶部的其余行。 以下示例将显示/ var / log / secure的所有行,但最后250行除外。
Syntax: head -n -N FILENAME
$ 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命令实时查看增长的日志文件
这可能是sysadmins最常用的命令之一。要查看不断增长的日志文件并仅查看较新的内容,请使用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]
示例9:显示文件中的特定字节。
以下示例说明了如何显示文件的前40个字节或最后30个字节。
显示syslog中的前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
翻译自: https://www.javacodegeeks.com/2013/12/common-linux-log-files-name-and-usage.html