在运维过程当中发现最头疼的莫过于服务器磁盘空间越来越大,这样的危险之处在于:如果是系统盘分区的空间挤占严重的话极有可能导致系统无法开机!(本人曾体验过一次,欲哭无泪……)
做软件运维的肯定非常有感触,新软件上线,各种调试日志,各种log,没几个小时就可以达到数个GB以上,所以时刻盯着磁盘的使用率也不是个办法。一个不留神磁盘空间可能就满了。如果碰上其它厂商的软件那就更苦逼了,自己来运维,虽然可以远程协助,但整天也是提心吊胆……
所以是时候想办法做一个定期删除的小脚本了,能让机器干的活全部还给机器。
好在一般的log日志都是按照日期来生产的,这样的话再自动清理log日志文件的时候就方便多了。
废话不多说了,放脚本:
- [url=home.php?mod=space&uid=48942]@echo[/url] off
- echo 删除log文件……
- rem /p-指定X天的文件
- forfiles /p "C:\Users\abc\Desktop\新建文件夹" /d -2 /m *.log /c "cmd /c echo deleting @file ...【已完成】 && del /f @path"
- echo ——————————————————————
- @pause
复制代码
主要用到forfiles语句。 /p:指定Path ,表明要从哪里开始搜索。默认的文件夹是当前工作目录,该目录通过键入句号(.) 指定,如示例中的“C:\Users\abc\Desktop\新建文件夹”。 /d:非常重要,该参数决定了删除文件的日期。其后可加参数 [{+ | - }]或者[{MM/DD/YYYY|DD }],选择日期大于或等于(+)(或者小于或等于(-))指定日期的文件,其中MM/DD/YYYY是指定的日期,只有DD时是当前日期减去DD天。如果未指定+或-,则默认使用+。DD的有效范围是0 - 32768。 /m:查找的文件名掩码,即用来匹配需要删除的文件格式(后缀)。 /c:运行的命令行,表示为每个文件执行的命令。命令行的字符串须用双引号括起来。 - "cmd /c echo deleting @file ...【已完成】 && del /f @path"
复制代码 cmd:为打开命令提示符执行后续的指令。@files:显示文件名称。 /f:指可以强制删除只读文件,无需确认。 @path:文件路径。
编写好脚本并测试,测试通过后将其添加到任务计划程序中,定期执行即可定期删除指定日期前或指定天数前的文件。 |