<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post//</link>
<title><![CDATA[centos的logrotate切换日志文件]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Mon, 06 Jan 2020 21:47:18 +0000</pubDate> 
<guid>https://atim.cn/post//</guid> 
<description>
<![CDATA[ 
	利用系统自带的logrotate切割nginx日志<br/>摘要： 这个东东可以切割任何日志，不仅仅是NGINX的log,很好用哦。<br/>logrotate简介<br/>&nbsp;&nbsp;&nbsp;&nbsp; logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除，并创建新的日志文件，我们把它叫做“转储”。我们可以根据日志文件的大小，也可以根据其天数来转 储，这个过 程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件，以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面，观察一下。<br/>作用:<br/>如果日志文件比较大，MV是需要时间的，这段时间内的日志有可能丢失。logrotate可以在切割日志的同时，不丢失数据。<br/>vi /etc/logrotate.d/nginx <br/>/usr/local/nginx/logs/*.log &#123;<br/>daily<br/>rotate 7 <br/>missingok<br/>notifempty<br/>minsize 10M <br/>dateext<br/>sharedscripts<br/>postrotate<br/>&nbsp;&nbsp;&nbsp;&nbsp;if [ -f /usr/local/nginx/logs/nginx.pid ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`<br/>&nbsp;&nbsp;&nbsp;&nbsp;fi<br/>endscript<br/>&#125;<br/>脚本解释：<br/>/usr/local/nginx/logs/*.log &#123;&nbsp;&nbsp;&nbsp;&nbsp;nginx的日志路径<br/>/usr/local/nginx/logs/www.qq.com.log error.log &#123;&nbsp;&nbsp; 可以指定日志，用空格分开<br/>daily&nbsp;&nbsp;每天轮询<br/>rotate 7&nbsp;&nbsp;保留7天<br/>missingok&nbsp;&nbsp;如果日志丢失，不报错继续滚动下一个日志<br/>notifempty&nbsp;&nbsp;当日志为空时不进行滚动<br/>dateext&nbsp;&nbsp; 在文件末尾添加当前日期<br/>sharedscripts&nbsp;&nbsp; 运行postrotate脚本<br/>postrotate&nbsp;&nbsp;&nbsp;&nbsp;脚本内容，给NGINX发信号要求重新生成日志，如果nginx没开起来就不操作<br/>&nbsp;&nbsp;&nbsp;&nbsp;if [ -f /usr/local/nginx/logs/nginx.pid ]; then&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`<br/>&nbsp;&nbsp;&nbsp;&nbsp;fi<br/>endscript<br/>&#125;<br/>测试，有生成就代表配置成功<br/>/usr/sbin/logrotate -f /etc/logrotate.d/nginx<br/> <br/>加入每天凌晨自动运行crontab<br/>00 00 * * *&nbsp;&nbsp;/usr/sbin/logrotate -f /etc/logrotate.d/nginx<br/>也可以放入/etc/cron.daily/<br/>一定要注意：1、在测试切割是否成功，一定要先备份一下！如果想保留全部日志，设置一个很大的值比如3650，如果你注释rotate或者不加，那么不会切割成功。<br/> <br/> <br/> 参数说明：<br/>logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表：<br/>compress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过gzip 压缩转储以后的日志<br/>nocompress&nbsp;&nbsp;不需要压缩时，用这个参数<br/>copytruncate 用于还在打开中的日志文件，把当前日志备份并截断<br/>nocopytruncate 备份日志文件但是不截断<br/>create mode owner group 转储文件，使用指定的文件模式创建新的日志文件<br/>nocreate 不建立新的日志文件<br/>delaycompress 和 compress 一起使用时，转储的日志文件到下一次转储时才压缩<br/>nodelaycompress 覆盖 delaycompress 选项，转储同时压缩。<br/>errors address 专储时的错误信息发送到指定的Email 地址<br/>ifempty 即使是空文件也转储，这个是 logrotate 的缺省选项。<br/>notifempty 如果是空文件的话，不转储<br/>mail address 把转储的日志文件发送到指定的E-mail 地址<br/>nomail 转储时不发送日志文件<br/>olddir directory 转储后的日志文件放入指定的目录，必须和当前日志文件在同一个文件系统<br/>noolddir 转储后的日志文件和当前日志文件放在同一个目录下<br/>prerotate/endscript 在转储以前需要执行的命令可以放入这个对，这两个关键字必须单独成行<br/>postrotate/endscript 在转储以后需要执行的命令可以放入这个对，这两个关键字必须单独成行<br/>daily 指定转储周期为每天<br/>weekly 指定转储周期为每周<br/>monthly 指定转储周期为每月<br/>rotate count 指定日志文件删除之前转储的次数，0 指没有备份，5 指保留5 个备份<br/>tabootext [+] list 让logrotate 不转储指定扩展名的文件，缺省的扩展名是：.rpm-orig, .rpmsave, v, 和 ~<br/>size size 当日志文件到达指定的大小时才转储，Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
]]>
</description>
</item><item>
<link>https://atim.cn/post//#blogcomment</link>
<title><![CDATA[[评论] centos的logrotate切换日志文件]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://atim.cn/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>