windows下自动删除过期文件的脚本
前言:
比如日志文件每天都产生,时间长了就会有很大的一堆垃圾。整理一下 定时删除文件的方法。
正文:
Windows:
定时删除tomcat日志和缓存。可以保留天数
forfiles /p "e:\Program Files\Tomcat 7.0\logs" /s /m *.log /d -5 /c "cmd /c del @path"
forfiles /p "e:\Program Files\Tomcat 7.0\logs" /s /m *.txt /d -5 /c "cmd /c del @path"
**** 红色的是目录。
绿色是以.log和.txt后缀格式的文件将会被删除。
蓝色是保留的天数,保留天数之内的日志和缓存不会被删除。
创建一个bat文件,按需求修改以上的批处理命令,把修改后的命令放入bat文件, 然后保存。
再通过系统上的任务计划,根据需求自定义创建任务,最后系统自动执行任务,达到自动删除tomcat日志和缓存的目的。
补充说明:
在windows server 2003系统中有一个forfiles命令能够查找满足指定条件的文件,下面是这个命令的用法。
forfiles /p <目标目录名> /d <天数> /c <执行的命令>
例:forfiles /p "D:bigantlogs" /s /m *.* /d -3 /c "cmd /c del @path"
解释一下相关参数及命令
/p : 指定开始搜索文件的位置,如果不指定则默认为当前目录。
/m : 文件查找所使用的通配符如代码中的"*.log"则为所有日志文件,当然也可以指定诸如"manmee_*.log"这样以manmee开头的所有日志文件。如果不指定此参数则默认为"*.*"。
/d [{+|-}][{|}] : 指定想选择文件的最后修改时间,上文中用了 "/d -7" 表示所有以当天为基础,7天以前的文件。当然这里还可以指定具体时间,例如:"/d -08/18/2009"这样所有早于2009年8月18日的文件。注意指定的时间必须是"MM/DD/YYYY"的格式。
/c 对所有文件以此执行指定的命令,命令体须在双引号(")内。
补充: 利用windows的任务计划自动重启tamcat程序:
- 单击“开始”按钮,然后依次选择“程序”→“附件”→“系统工具”→“任务计划”(或者是“设置”→“控制面板”→“任务计划”),启动“添加任务计划”。
2.在弹出页面中,选择“创建基本任务”,效果如下,输入名称、描述。下一步
3.创建触发器,选择自动执行这个任务的时间频率(如每天、每星期、每月、一次性、每次启动计算机时、每次登录时等),然后单击“下一步”按钮。
4.设置此任务计划需要执行的脚本或程序(自定义脚本)。
5.点击完成,任务完成。可以在该定时任务中查看详情。
Linux:
定时清理7天前的Tomcat日志脚本
#!/bin/bash
logs_path="/tomcat/tomcat-token/logs"
find $logs_path -mtime +7 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime +7 -name "catalina.*.log" -exec rm -rf {} \;
find $logs_path -mtime +7 -name "manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +7 -name "host-manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +7 -name "fileservice.log.*" -exec rm -rf {} \;