0570syslog.htm

来自「鸟哥LINUX 学习课本」· HTM 代码 · 共 956 行 · 第 1/5 页

HTM
956
字号
{</font><br><font size="-1" color="#ffff00" face="SimSun">&#160;&#160;&#160;monthly</font><br><font size="-1" color="#ffff00" face="SimSun">&#160;&#160;&#160;create 0664 root utmp</font><br><font size="-1" color="#ffff00" face="SimSun">&#160;&#160;&#160;rotate 1</font><br><font size="-1" color="#ffff00" face="SimSun">}</font></p><p><font size="-1" color="#ffffff" face="SimSun"># 底下这个档案跟/var/log/wtmp 类似!</font><br><font size="-1" color="#ffff00" face="SimSun">/var/log/lastlog{</font><br><font size="-1" color="#ffff00" face="SimSun">&#160;&#160;&#160;monthly</font><br><font size="-1" color="#ffff00" face="SimSun">&#160;&#160;&#160;rotate 1</font><br><font size="-1" color="#ffff00" face="SimSun">}</font></p></td></tr></tbody></table> <br>由这个档案的设定我们可以知道 /etc/logrotate.d 其实就是由 /etc/logrotate.conf所规划出来的目录,所以,其实我们可以将所有的资料都给他写入 /etc/logrotate.conf即可,但是这样一来这个档案就实在是太复杂了,因此,独立出来一个 RPM 套件就一个 rotate 的执行档案,呵呵!似乎是比较合理的一个方法!上面的信息是系统的预设rotate情况,不过,您可以自行的修改为自己喜欢的样式,例如,如果您的系统的空间够大,并且担心除错以及黑客的问题,那么可以:<br> <ul><li><font color="#000066">将 rotate 4 改成 rotate 9 左右,以保存较多的备份文件;</font></li><li><font color="#000066">大部分的登录档不需要 compress 啰!但是空间太小就需要compress !尤其是很占硬盘空间的httpd更需要compress的!</font></li></ul> <br>好了,上面我们大致介绍了 /var/log/wtmp 这个档案的设定,但是还是不很详细啦,所以底下我们以/etc/logrotate.d/syslog 这个轮替 syslog 这个服务的档案,来看看该如何设定他的rotate呢:<br> <table bgcolor="#000000" border="1" cols="1" width="750"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">/var/log/auth.log/var/log/syslog /var/log/user.log /var/log/secure /var/log/messages /var/log/boot.log/var/log/mail/errors /var/log/mail/info /var/log/mail/warnings /var/log/cron/errors/var/log/cron/info /var/log/cron/warnings /var/log/kernel/errors /var/log/kernel/info/var/log/kernel/warnings /var/log/lpr/errors /var/log/lpr/info /var/log/lpr/warnings/var/log/news/news.err /var/log/news/news.notice /var/log/news/news.crit/var/log/daemons/errors /var/log/daemons/info /var/log/daemons/warnings/var/log/explanations {</font><br><font size="-1" color="#ffffff" face="SimSun">    sharedscripts</font><br><font size="-1" color="#ffffff" face="SimSun">    rotate5</font><br><font size="-1" color="#ffffff" face="SimSun">    weekly</font><br><font size="-1" color="#ffffff" face="SimSun">    postrotate</font><br><font size="-1" color="#ffffff" face="SimSun">    /usr/bin/killall-HUP syslogd #</font><br><font size="-1" color="#ffffff" face="SimSun">    endscript</font><br><font size="-1" color="#ffffff" face="SimSun">}</font></td></tr></tbody></table> <br>正确的 logrotate 的写法中:<br> <ul><li><font color="#000066">将 log file 名称(包含绝对路径)写在前面,可以使用空格符分隔多个log files ;</font></li><li><font color="#000066">用 { } 包括所有的设定;</font></li><li><font color="#000066">设定的项目与前面提到的相同,并且可加入 rotate 前(pre) 与后 (post) 的一些特殊执行的指令!</font></li><ul><li><font color="#000066">prerotate:在启动 logrotate 之前进行的指令,例如修改log file 的属性!!</font></li><li><font color="#000066">postrotate:在做完 logrotate 之后启动的指令,例如重新启动(kill -1 或 kill -HUP )某个服务!</font></li><li><font color="#000066">Prerotate与postrotate对于已经加上了特殊属性的档案处理上面,是相当重要的执行程序!</font></li></ul></ul> <br>由于我们已经将登录文件的属性设定了chattr+a,所以必需要在logrotate之前将这个属性拿掉,并在logrotate之后,再将这个属性加回去!所以啰,那个prerotate与postrotate就显的相当的重要啦!假设我们仅针对/var/log里面的几个档案设定属性:<br> <ul><li><font color="#000066">messages</font></li><li><font color="#000066">secure</font></li><li><font color="#000066">auth.log</font></li></ul> <br>那么应该如何修改上面显示的内容呢?嗯!你可以这样做:<br> <table bgcolor="#000000" border="1" cols="1" width="750"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">/var/log/auth.log/var/log/syslog /var/log/user.log /var/log/secure /var/log/messages /var/log/boot.log/var/log/mail/errors /var/log/mail/info /var/log/mail/warnings /var/log/cron/errors/var/log/cron/info /var/log/cron/warnings /var/log/kernel/errors /var/log/kernel/info/var/log/kernel/warnings /var/log/lpr/errors /var/log/lpr/info /var/log/lpr/warnings/var/log/news/news.err /var/log/news/news.notice /var/log/news/news.crit/var/log/daemons/errors /var/log/daemons/info /var/log/daemons/warnings/var/log/explanations {</font><br><font size="-1" color="#ffffff" face="SimSun">    sharedscripts</font><br><font size="-1" color="#ffffff" face="SimSun">    rotate5</font><br><font size="-1" color="#ffffff" face="SimSun">    weekly</font><br><font size="-1" color="#ffffff" face="SimSun">    prerotate</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr-a /var/log/auth.log</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr-a /var/log/messages</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr-a /var/log/secure</font><br><font size="-1" color="#ffffff" face="SimSun">    endscript</font><br><font size="-1" color="#ffffff" face="SimSun">    postrotate</font><br><font size="-1" color="#ffffff" face="SimSun">        /usr/bin/killall-HUP syslogd</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr+a /var/log/auth.log</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr+a /var/log/messages</font><br><font size="-1" color="#ffff00" face="SimSun">        /usr/bin/chattr+a /var/log/secure</font><br><font size="-1" color="#ffffff" face="SimSun">    endscript</font><br><font size="-1" color="#ffffff" face="SimSun">}</font></td></tr></tbody></table> <br>看到否?就是先给他去掉 a 这个属性,然后执行了之后,再给他加入这个属性!请特别留意的是,那个/usr/bin/killall –HUP syslogd 的意义,这一行的目的在于将系统的 syslogd重新以其参数档( syslog.conf )的资料读入一次!也可以想成是 reload 的意思啦!由于我们建立了一个新的空的纪录文件,如果不执行此一行来重新启动服务的话,那么记录的时候将会发生错误呦!!(请回到资源管理的章节读一下kill 后面的 signal 的内容说明)!<br> <br><b><font color="#000099">Logrotate的测试:</font></b><br>好了,设定完成之后,我们来测试看看这样的设定是否可行呢?给他执行底下的指令:<br> <table bgcolor="#000000" border="1" cols="1" width="750"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root @testroot]# </font><font color="#ffff00">logrotate –f /etc/logrotate.conf</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root @testroot]# </font><font color="#ffff00">lsattr /var/log/auth.log /var/log/messages/var/log/secure</font></font><br><font size="-1" color="#ffffff" face="SimSun">----a---------/var/log/auth.log</font><br><font size="-1" color="#ffffff" face="SimSun">----a---------/var/log/messages</font><br><font size="-1" color="#ffffff" face="SimSun">----a---------/var/log/secure</font></td></tr></tbody></table> <br>上面那个 -f 具有『强制执行』的意思,如果一切的设定都没有问题的话,那么理论上,您的/var/log 这个目录就会起变化啰!而且应该不会出现错误讯息才对!嘿嘿!这样就OK 了!很棒不是吗?!<p>好了,那么预设的logrotate什么时候执行呢?呵呵!不用担心,系统已经帮我们设定好了!放在哪里呢?<br> </p><ul><font color="#000066" face="SimSun">/etc/cron.daily/logrotate</font></ul> <br>注意看一下里面的内容:<br> <ul><font color="#000066" face="SimSun">/usr/sbin/logrotate /etc/logrotate.conf</font></ul> <br>由于 logrotate 的工作已经加入 crontab 里头了!所以现在每天系统都会自动的给他查看logrotate 啰!不用担心的啦!!只是要注意一下那个 /var/log/messages 里头是否常常有:『Jun23 04:02:00 test syslogd 1.4.1: restart.』这样的字样!?这说明的是 syslogd重新启动的时间啦(就是因为 /etc/logrotate.d/syslog 的设定之缘故!)<br> <table border="1" cols="1" width="80%"><tbody><tr><td><font face="SimSun">例题:我的/var/log/messages只希望记录一些相当重要的信息,关于cron的内容已经在/var/log/cron里面记录了,所以我想将cron的信息移除,那么该怎么修改我的syslog.conf的设定呢?</font><br><font face="SimSun">答:</font><blockquote><font face="SimSun">基本上,你可以这样设定啦!</font><p><font color="#000066" face="SimSun">[root @test root]# vi /etc/syslog.conf</font></p><p><font face="SimSun">修改 /var/log/messages 那一行,使成为底下的模样就可以了!</font></p><p><font color="#000066" face="SimSun">*.info;mail.none;;news.none;authpriv.none;cron.none&#160;&#160;&#160;&#160;&#160;-/var/log/messages</font></p><p><font color="#000066" face="SimSun">[root @test root]# /etc/rc.d/init.d/syslogrestart</font></p><p><font face="SimSun">这样就可以啦!简单的很!</font></p></blockquote>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?