有一台Windows Server服务器,开启FTP用来存储Java应用dump文件,需要定时清理,考虑有两种清理方案:
方案一:
在Linux通过挂载Windows共享目录,cifs 文件系统,通过Shell 脚本 + 定时任务清理(这个用find + crond 就可以,不赘述)
方案二:
在Windows写bat脚本,通过计划任务程序加载定时任务执行清理
需求一:需要清理7天前的dump
需求二:需要清理同一个系统的dump,保留一个(目前没验证保留的是否最新文件)
一、dos 测试
win + r ,输入cmd
或者
鼠标右键桌面左下角win标识,选择运行,输入cmd
注意:
1、不要用Windows PowerShell dir显示内容不一样,而且计划任务程序默认加载的也是cmd ,bat的默认执行程序也是cmd
2、注意目录路径
# 打印查询结果,验证文件是否是目标文件
> forfiles /P "D:\dump" /M *.hprof /D -7 /C "cmd /c echo @file"
> forfiles /? # 查看帮助文档
/P 地址
/M 模糊匹配
/D -7 代表7天前
/C 后面跟命令
"cmd /c del/F/s/q @file" 删除文件
"cmd /c echo @file" 打印文件
> forfiles /P "D:\dump" /M *.hprof /D -7 /C "cmd /c del/F/s/q @file"
二、脚本内容
新建一个文件,后缀修改为bat,右键,选择编辑
如果看不到后缀,打开文件浏览器,最上面菜单查看,找到文件扩展名,勾选
输入上面测试过的内容(注意路径):
@echo off
forfiles /P "D:\dump" /M *.hprof /D -7 /C "cmd /c del/F/s/q @file"
双击,测试和验证清理效果
三、添加任务计划程序
Win+R,调出运行窗口,输入compmgmt.msc 进入计算机管理
或
鼠标右键桌面左下角Win图标,选择计算机管理
系统工具 》 任务计划程序 》任务计划程序库 》 右边窗口操作底下的基本任务 》 按照指引填写 注意选择脚本,保存即可
测试运行,找到自己的任务,鼠标右键,运行,验证脚本执行情况
历史记录可以查看历史运行情况,如果看不到,操作窗口,点击启用所有任务历史记录即可