【菜鸟学Linux】Cron Job定期删除Log(日志)文件
以前一直做Windows开发,近期的项目中要求使用Linux。作为小菜鸟一枚,赶紧买了一本经典书《鸟哥的Linux私房菜》学习。最近刚好有一个小任务 - 由于产品产生的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天 function deleteLogs(){
# 获取系统时间,所有时间格式都是秒
local currentDate=`date +%s`
echo "current date: " $currentDate for file in `find $ -name "*.js_*.log"` #此处定义文件名格式,避免误删
do
local name=$file
local modifyDate=$(stat -c %Y $file) #对比时间,算出日志存在时间,距离最近一次修改
local logExistTime=$(($currentDate - $modifyDate))
logExistTime=$(($logExistTime/)) 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的格式如下:
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- 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等。
四. 参考资料
下面这些参考资料很不错,如果要学习Cron Job,应该就足够。
1. HowTo: Add Jobs To cron Under Linux or UNIX?
http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/
2. How to run a cron job using the sudo command
http://askubuntu.com/questions/173924/how-to-run-a-cron-job-using-the-sudo-command
3. 如何查看crontab的日志记录
http://blog.itpub.net/9252210/viewspace-684597
4. Linux crontab日志讲解
http://os.51cto.com/art/200910/159229.htm
新手小白,通过日志记录自己的所学所得,抛砖引玉,欢迎批评指正:-)
Best Regards
Kevin Song
2014/6/30
【菜鸟学Linux】Cron Job定期删除Log(日志)文件的更多相关文章
- 定期删除IIS日志文件
服务器中由于监控的需要会经常生成很多日志文件,比如IIS日志文件(C:\inetpub\logs\LogFiles),一个稍微有流量的网站,其日志每天可以达到上百兆,这些文件日积月累会严重的占用服务器 ...
- Linux系统的LOG日志文件及入侵后日志的清除
UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX/var/adm - ...
- 利用Linux的硬连接删除MySQL大文件
利用Linux的硬连接删除MySQL大文件 http://blog.csdn.net/wxliu1989/article/details/22895201 原理:硬链接基础当多个文件共同指向同一ino ...
- SQL Server 2008 收缩日志 清空删除大日志文件 转载
SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...
- 使用Shell脚本删除/清空日志文件
话不多少,直接上代码: #!/bin/bash workdir=("/home/Tax_Punish_Ret/log_txt") #可填写多个路径, 用空格隔开 # 查找日志文件 ...
- 使用触发器实现记录oracle用户登录失败信息到alert.log日志文件
前面我们说了用oracle自带的审计功能可以实现记录用户登录失败日志到数据表中(链接:http://www.54ok.cn/6778.html).今天我们来分享一下如何把用户登录失败信息记录到aler ...
- log4j.properties配置与将异常输出到Log日志文件实例
将异常输出到 log日志文件 实际项目中的使用: <dependencies> <dependency> <groupId>org.slf4j</groupI ...
- linux通过grep根据关键字查找日志文件上下文
linux通过grep根据关键字查找日志文件上下文 1.在标准unix/linux下的grep命令中,通过以下参数控制上下文的显示: grep -C 10 keyword catalina.out 显 ...
- 删除N天前的log日志文件:RollingFileAppender,DailyRollingFileAppender,/etc/cron
1. 如果您使用的是Log4j,且采用的RollingFileAppender方式, 通过设置maxBackupIndex属性来指定要保留的日志文件数的最大值可以间接实现删除N天前的日志文件. 2. ...
随机推荐
- NOIP2018初赛总结(提高组)(试题+答案+简要解析)
NOIP2018初赛总结(提高组) 更新完毕(纯手敲),如果有错误请在下面留言 单选题 T1.下列四个不同进制的数中,与其它三项数值上不相等的是 A.\((269)_{16}\) B.\((617)_ ...
- 谁能赢呢? BZOJ 2463
题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...
- 直播点赞,上升的动画-- CAKeyFrameAnimation
// // ViewController.m // DMHeartFlyAnimation // // Created by Rick on 16/3/9. // Copyright © 20 ...
- HashMap的容量大小增长原理(JDK1.6/1.7/1.8)
. 前言 HashMap的容量大小会根据其存储数据的数量多少而自动扩充,即当HashMap存储数据的数量到达一个阈值(threshold)时,再往里面增加数据,便可能会扩充HashMap的容量. 可能 ...
- eclipse项目中的java文件导入后变为空心J问题
1,选择工程名字右键——>属性——>JavaBuild Path会看到右侧Source标签中为空白 2,点击Add Folder...选择如图所示的src包和相关的配置文件包,点击确定: ...
- redis常用数据类型与命令
注意:LPUSH 和LPOP按照栈进行操作,RPUSH和RPOP按照队列进行操作 zremrangebyscore key score开始 score结束//根据score删除 zremrangeb ...
- C#空接合操作符——??
操作符: ?? 用法:C = A ?? B; 解释:if(A != null){ C=A;} else{C=B} 类似三元运算符 :? 例子: Int32? num1=null; Int32? ...
- 使用YARN修改中国镜像
官网地址 下载安装 https://yarnpkg.com/zh-Hans/ 查看仓库使用地址 yarn config set registry 设置为淘宝镜像 yarn config set r ...
- Query获取多种input值的方法
1 if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 name即控件name属性,va ...
- 1.搭建JavaEE开发环境
1.Web应用介绍: 2.Servlet简介 3.JSP简介 4.Servlet容器 Web服务器有静态资源和动态页面,静态资源是*.html(文件系统),动态页面是Servlet容器. 5.Tomc ...