<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]LInux下的Cron Job定期删除其Log（日志）文件 - kevin_song]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 27 Jan 2016 03:46:15 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：阿里上买了一小vps，空间本来就小，居然发现一个大文件，442M&nbsp;&nbsp;&nbsp;&nbsp;/var/log/cron，于是想把它干掉，以减少占用的磁盘空间。<br/>我的vps是一个文件：<br/>echo &quot;&quot; &gt;&nbsp;&nbsp;/var/log/cron <br/>du -sh /var/log/cron<br/>而有的那个机器是一个目录，目录怎么办，一样删除，如下：<br/>最近刚好有一个小任务 - 由于产品产生的Log很多，而且增长很快，所以需要用脚本（Bash scripts）删除过期的Log文件 。<br/><br/>使用Linux下的Cron Job可以很好的解决这个问题。<br/><br/>　　 什么是Cron Job?<br/>　　 建立Cron Job需要用到命令crontab，维基百科定义： crontab 命令常见于Unix和类Unix的操作系统之中，用于设置周期性被执行的指令 。<br/>查阅了一些资料（发现技术查询还是要用Google）参考后，期间也遇到很多问题，通过摸索和学习，实现步骤如下：<br/><br/>一. 写一个Bash shell script，作用： 检索日志文件夹下的所有log文件，查询每个文件的日期，如果日期过期，则删除这个log文件 　　<br/><textarea name="code" class="php" rows="15" cols="100">
#!/bin/bash
 
 log_path=&quot;&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #此处定义你的日志文件夹路径
 expried_time=7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#此处定义你的日志过期时间，如7天
 
 function deleteLogs()&#123;
&nbsp;&nbsp;&nbsp;&nbsp; # 获取系统时间，所有时间格式都是秒
&nbsp;&nbsp;&nbsp;&nbsp; local currentDate=`date +%s`
&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;current date: &quot; $currentDate
 
&nbsp;&nbsp;&nbsp;&nbsp; for file in `find $1 -name &quot;*.js_*.log&quot;` #此处定义文件名格式，避免误删
&nbsp;&nbsp;&nbsp;&nbsp; do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local name=$file
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local modifyDate=$(stat -c %Y $file)
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #对比时间，算出日志存在时间，距离最近一次修改
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local logExistTime=$(($currentDate - $modifyDate))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logExistTime=$(($logExistTime/86400))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $logExistTime -gt $expried_time ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;File: &quot; $name &quot;Modify Date: &quot; $modifyDate + &quot;Exist Time: &quot; $logExistTime + &quot;Delete: yes&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rm -f $file
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;File: &quot; $name &quot;Modify Date: &quot; $modifyDate + &quot;Exist Time: &quot; $logExistTime + &quot;Delete: no&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi
&nbsp;&nbsp;&nbsp;&nbsp; done
 &#125;
 
 deleteLogs $log_path
</textarea><br/><br/>二. 新建一个Cron Job，周期性的执行上面的脚本<br/>命令：<br/><textarea name="code" class="php" rows="15" cols="100">
sudo crontab –e
5 0 * * * /home/user/deleteOldLog.sh &gt;&gt; /home/user/cron_job.log 2&gt;&amp;1
</textarea><br/><br/>注意：<br/>1. 这里我用的是 sudo crontab -e ，不是crontab -e，这样做是使用root的crontab，可以使用sudo，获取root某些权限。<br/>2. Cron Job的格式如下：<br/><textarea name="code" class="C" rows="15" cols="100">
1 * * * * * command to be executed
2 - - - - -
3 &#124; &#124; &#124; &#124; &#124;
4 &#124; &#124; &#124; &#124; ----- Day of week (0 - 7) (Sunday=0 or 7)
5 &#124; &#124; &#124; ------- Month (1 - 12)
6 &#124; &#124; --------- Day of month (1 - 31)
7 &#124; ----------- Hour (0 - 23)
8 ------------- Minute (0 - 59)
</textarea><br/><br/>具体可参见http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/，Cron Job的用法讲解很详细。<br/><br/>3. 如何通过日志查看Cron Job的执行情况？<br/><br/>&quot; &gt;&gt; /home/user/cron_job.log 2&gt;&amp;1 &quot;的作用是可以方便的将Cron Job执行情况的日志记录到自己指定的Log文件中，方便查看Job执行情况。另外还可通过下面这个命令，查看Job执行的一些其他信息，感觉主要还是看自己指定的日志文件，如果执行出错，如Permisson Denied错误，在里面记录的很清楚。<br/><textarea name="code" class="php" rows="15" cols="100">tail -f /var/log/cron</textarea><br/><br/>三. 小结<br/><br/>经过以上的步骤，就可以很轻松的在Linux中建立起一个Cron Job，用于周期性的做某些事情，如删Log等。<br/><br/>四. 赔偿是参考资料和摘自：<br/>原文&nbsp;&nbsp;http://www.cnblogs.com/KevinSong/p/3816981.html<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]LInux下的Cron Job定期删除其Log（日志）文件 - kevin_song]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>