linux服务器删除指定目录下7天前的log文件
可以使用Linux中的find命令进行实现。具体步骤如下:
find ./ -name "*.log" -type f -mtime +7 -exec rm -rf {} \;
./
表示搜索当前目录及其子目录。-name "*.log"
表示只搜寻后缀名为 .log 的文件。-type f
表示只搜寻文件类型是常规文件的文件。-mtime +7
表示查找最后修改时间在 7 天以上的文件。-exec rm -rf {} \;
表示在查找到文件之后,执行 rm 命令进行删除。
shell脚本定时删除:
- 首先打开终端,输入crontab -e命令,打开定时任务编辑器
- 在编辑器中添加以下内容(这里以每天的凌晨2点为例):
0 2 * * * /bin/sh /path/to/script.sh
其中/bin/sh
为/bin
目录下的sh
程序,/path/to/script.sh
为你的删除脚本的路径。
- 编写shell脚本。以下是一个简单的例子,可以根据实际情况修改:
#!/bin/bash
LOG_DIR="/var/log"
cd $LOG_DIR
rm -rf *.log
将以上脚本保存为script.sh
,并将其放置在适当的位置,例如/home/user/
目录下。
删除7天前的:
可以使用shell脚本中的stat
命令获取文件的创建时间,然后计算出文件创建时间距今的天数,再进行判断是否需要删除。
#!/bin/bash
log_dir="/path/to/log/dir"
# 获取当前时间的时间戳
current_ts=$(date +%s)
# 循环处理日志目录下的所有log文件
for logfile in ${log_dir}/*.log
do
# 获取文件的创建时间
create_ts=$(stat -c %Y "${logfile}")
# 计算文件创建时间距今的天数
diff_days=$(((current_ts - create_ts) / 86400))
# 如果超过7天,则删除该日志文件
if [ ${diff_days} -ge 7 ]; then
rm "${logfile}"
echo "Deleted ${logfile}"
fi
done
注意,其中的/path/to/log/dir
需要替换成实际的日志目录。如果日志文件名并非以.log
结尾,需要修改循环条件中的通配符或将其替换成实际的文件名。
- 保存并退出编辑器,crontab将自动读取并执行此定时任务。
该脚本实现的功能是每天凌晨2点删除/var/log
目录下所有的log
后缀的日志文件。你也可以根据需要修改脚本中LOG_DIR
的值来指定不同的目录。
本作品采用《CC 协议》,转载必须注明作者和本文链接