您的位置:首页 > 运维架构 > Shell

shell学习:Linux系统日志的相关命令、文件和管理工具

2014-04-03 20:37 1076 查看
本文转自:http://www.1987.name/642.html

日志文件是Linux系统维必不可少的部分,日志文件会随着时间的推移变的越来越大,需要使用一种被称为轮替的技术来限制日志的体积,一旦超过了限制的大小,就对它的内容进行抽取,同时将日志文件中的旧条目存储到归档文件中,以便日后的查阅。

logrotate命令

logrotate命令是一个日志文件管理工具,能够将日志文件的大小限制在给定的范围之内,各种应用程序会将信息添加到日志文件中,最新添加的信息总是保存在日志文件的尾部,logrotate根据配置文件扫描特定的日志文件。

logrotate的配置目录位于/etc/logrotate.d/,这个目录中已经包含了还能多其他程序的日志文件配置,打开就可以发现。

logrotate命令示例

【示例】创建一个日志文件配置:

cat /etc/logrotate.d/test
/var/log/test.log {
missingok
notifempty
size 30k
commpress
weekly
rotate 5
create 0600 root root
}

以上是全部配置,其中/var/log/test.log是指定了日志文件路径,旧的日志文件归档之后也放在同一个目录下,参数解释:

missingok
如果日志文件丢失,则忽略,然后返回(不对日志文件进行轮替)。
notifempty
仅当源日志文件非空时才会对其进行轮替。
size 30k
限制实施轮替的日志文件的大小,可以用1M表示1MB。
commpress
允许用gzip对较旧的日志进行压缩。
weekly
指定进行轮替的时间间隔,可以是weekly、yearly、daily。
rotate 5
需要保存的就日志归档数量,这里是5,归档后的文件名将会是test.log.1.gz、test.log.2.gz....
create 0600 root root
指定所要创建的归档文件的模式、用户、用户组。

logrotate命令参数

参数功能
compress通过gzip压缩转储以后的日志。
nocompress不需要压缩时,用这个参数。
copytruncate用于还在打开中的日志文件,把当前日志备份并截断。
nocopytruncate备份日志文件但是不截断。
create mode owner group转储文件,使用指定的文件模式创建新的日志文件。
nocreate不建立新的日志文件。
delaycompress和compress一起使用时,转储的日志文件到下一次转储时才压缩。
nodelaycompress覆盖delaycompress选项,转储同时压缩。
errors address专储时的错误信息发送到指定的Email地址。
ifempty即使是空文件也转储,这个是logrotate的缺省选项。
notifempty如果是空文件的话,不转储。
mail address把转储的日志文件发送到指定的E-mail地址。
nomail转储时不发送日志文件。
olddir directory转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统。
noolddir转储后的日志文件和当前日志文件放在同一个目录下。
prerotate/endscript在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行。
postrotate/endscript在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行。
daily指定转储周期为每天。
weekly指定转储周期为每周。
monthly指定转储周期为每月。
rotate count指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份。
tabootext [+] list让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~。
size size功能当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem)。

用syslog记录日志

日志文件有助于帮助我们推断系统出现的故障,因此在系统管理中要善于分析日志,在编写脚本、程序时,应当将程序执行过程记录在日志文件中。syslog日志配置文件位置:
/etc/syslog.conf


日志的级别

日志的级别分为七级,从紧急程度由高到底:

emerg
系统已经不可用,级别为紧急。
alert
警报,需要立即处理和解决。
crit
既将发生,得需要预防,事件就要发生。
warnig
警告。
err
错误信息,普通的错误信息。
notice
提醒信息,很重要的信息。
info
通知信息,属于一般信息。
debug
这是调试类信息。

系统常见重要日志

/var/log/boot.log
系统引导事件,就是开机自检过程信息。
/var/log/messages
发布内核启动信息。
/var/log/audit/audit.log
用户认证日志。
/var/log/dmesg
系统启动信息。
/var/log/cron
该日志文件记录crontab守护进程crond所派生的子进程的动作。
/var/log/maillog
记录了发送到系统或从系统发出的邮件。
/var/log/xferlog
FTP会话日志,记录用户向FTP服务器或从服务器拷贝了什么文件。
/var/log/kernlog
内核消息,默认没有开启。需要在
/etc/syslog.conf
文件中开启。
/var/log/Xorg.0.log
X-Window服务日志。
用户登录情况


/var/log/lastlog
记录最近成功登录事件和最后一次登录失败事件,由login生成。
/var/log/wtmp
永久记录每个用户登录、注销及系统的启动、停机事件。
/var/run/utmp
当前登录用户信息。随着用户登录注销不断变化,只保留当时联机的用户记录,不永久保留。

logger命令

/var/log
中创建并写入日志信息是由syslog协议处理的,是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用
logger
命令通过syslogd记录日志。

【示例】要向syslog文件
/var/log/messages
中记录日志信息:

logger this is a test log line

输出:
tail -n 1 messages
Jan  5 10:07:03 localhost root: this is a test log line

如果要记录特定的标记(tag)可以使用:

logger -t TAG this is a test log line

输出:
tail -n 1 messages
Jan  5 10:37:14 localhost TAG: this is a test log line


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐