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