windows服务器自动删除日志文件

时间:2024-02-16 22:16:14

背景:

有一天发现一系统程序突然终止了,发出了系统异常邮件。然后就去服务器看原因,原因竟然是服务器硬盘被撑爆。

原因分析:

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的是 控制面板-管理工具-任务计划程序)

 

修改服务器密码会导致任务执行失败

莫名的日志一直在堆积,日志已经大量占用硬盘,是一个隐患 ,怀疑是自己之前的自动删除日子的脚本 执行失败?还是遗漏了删除该文件夹下的日志。
发现都没有问题,去查看该计划,发现有执行失败报错信息
显示无法正确登录,导致执行删除任务失败。
才想起前一段时间, 机房把所有服务器的密码已经变更了。
因为服务器密码全部更改。导致删除日志的计划任务执行失败。
只好重新设置密码进行执行。