背景:
有一天发现一系统程序突然终止了,发出了系统异常邮件。然后就去服务器看原因,原因竟然是服务器硬盘被撑爆。
原因分析:
1、没有对服务器硬盘空间做监控;
2、我们的产生的日志文件过于庞大,又没有做及时删除。
解决方案:
为了一劳永逸的解决硬盘空间问题,我们对服务器日志文件进行定时删除处理,只保留最近一个月的日志文件。
步骤:
1、新建一个bat脚本。
2、添加到window执行计划中,进行每日执行。
具体操作
1、新建一个 del_before_30days.bat 文件。
内容:
forfiles -p "E:\working\logs" -s -m *.log -d -30 -c "cmd /c del @path"
脚本意思为:
路径:为E:\working\logs 的下 以匹配 .log 的文件,删除30天前的日志文件。
forfiles 命令的用法及参数:
forfiles /p <目标目录名> /d <天数> /c <执行的命令>
/p 指定的路径
/s 包括子目录
/m 查找的文件名掩码
/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前
/c 运行的命令行 表示为每个文件执行的命令。命令字符串应该用双引号括起来。
默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE"; 如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
2、添加到windows的任务计划程序。
我的电脑——>右键——>管理——>系统工具—>任务计划程序——>创建基本任务,定义好名字 ,定义每天定时删除即可。
(win10的是 控制面板-管理工具-任务计划程序)
修改服务器密码会导致任务执行失败
莫名的日志一直在堆积,日志已经大量占用硬盘,是一个隐患 ,怀疑是自己之前的自动删除日子的脚本 执行失败?还是遗漏了删除该文件夹下的日志。
发现都没有问题,去查看该计划,发现有执行失败报错信息
显示无法正确登录,导致执行删除任务失败。
才想起前一段时间, 机房把所有服务器的密码已经变更了。
因为服务器密码全部更改。导致删除日志的计划任务执行失败。
只好重新设置密码进行执行。