简单的说日志文件就是记录系统活动信息的几个文件,例如:何时、何地(来源ip)、何人(什么服务名称)、做了什么操作。换句话说就是:记录系统在什么时候由哪个进程做了什么样的行为时,发生了什么事件等。
日志文件可以帮助我们了解很多系统重要的事件,包括登入者的部分信息,因此日志文件的权限通常设置为仅有root能够读取而已。常见的日志文件有下面几个:
- /var/log/cron
这个文件记录了系统例行性工作调度的相关信息,如你的crontab调度有没有实际被进行?进行过程中有没有发生错误?/etc/crontab是否编写正确?在这个日志文件内都可以查询。
- /var/log/dmesg
该文件记录系统在开机时内核检测过程中所产生的各项信息。由于centos默认将开机时内核的硬件检测过程取消显示,因此额外将数据记录在此文件中。
- /var/log/lastlog
该文件记录了系统上所有帐号最近一次登入系统时的相关信息。lastlog命令就是利用这个文件所记录的信息来显示结果。
- /var/log/maillog或/var/log/mail/*
该文件或目录记录邮件的来往信息,其实主要记录SMTP和POP3(IMAP)协议提供者所产生的信息。
- /var/log/messages
该文件几乎记录了系统发生的所有错误信息(或者是重要的信息),所以这个文件相当重要;如果系统发生莫名的错误时,这个文件是必查的日志文件之一。
- /var/log/secure
基本上,只要牵扯到需要输入帐号密码的软件,当登入时(不管登入正确与否)都会被记录到这个文件中。包括系统的login程序、图形界面登入所使用的gdm程序、su、sudo等程序,还有网络联机的ssh、telnet等程序,登入信息都会被记载在这里。
- /var/log/wtmp,/var/log/faillog
这两个文件可以记录正确登入系统者的账户信息(wtmp)与错误登入时所使用的账户信息(faillog)。这个文件对追踪一般帐号者的使用行为很有帮助。
- /var/log/httpd/*,/var/log/news/*,/var/log/samba/*
不同的网络服务会使用它自己的日志文件案来记载它们自己产生的各项信息。上述的目录内则是个别服务所制定的日志文件。
常见的日志文件就是这几个,但是不同的linux distributions中,通常日志文件的文件名不会相同(除了/var/log/messages之外)。所以说,还需要查看linux主机上的日志文件设置数据才能知道自己主机上的日志文件主要的文件名。
日志文件的产生主要有两种方式,一种是由软件开发商自行定义写入的日志文件与相关服务,例如www软件apache就是这样处理的;另一种则是由linux distribution提供的日志文件管理服务来同一管理,只要将信息丢给这个服务后,它会自动分门别类地将各种信息放置到相关的日志文件中去。在centos中提供syslogd这个服务来同一管理日志文件。
除了这个syslogd之外,系统内核也需要额外的登入服务来记录内核产生的各项信息,这个专门记录内核信息的日志文件服务就是klogd。所以,日志文件所需服务主要就是syslogd和klogd这两个。
除了以上两个外还有一个叫logrotate(日志文件轮换)的程序,由于系统产生的信息每天都有,如果任凭日志文件持续记录的话,日志文件容量就会持续增大,这可能导致大文件读写效率不佳的问题,所以,需要对日志文件进行备份与更新。而logrotate就是用来解决这个问题的。
logrotate基本上就是将旧的日志文件更改名称,然后新建一个空白的日志文件,如此一来,新的日志文件将重新开始记录,然后只要将就的日志文件保留一段时间就可达到将日志文件“轮转“的目的。此外,如果旧的记录(大概要保存几个月吧)保存一段时间后没有问题,就可让系统自动删除,避免占掉过多的硬盘空间。
总结:针对日志文件所需的功能,需要的服务与程序有:
- syslogd 主要记录系统与网络等服务的信息;
- klogd 主要记录内核产生的各项信息;
- logrotate 主要进行日志文件的轮替功能。