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脚本定时删除:

  1. 首先打开终端,输入crontab -e命令,打开定时任务编辑器
  2. 在编辑器中添加以下内容(这里以每天的凌晨2点为例):
0 2 * * * /bin/sh /path/to/script.sh

其中/bin/sh/bin目录下的sh程序,/path/to/script.sh为你的删除脚本的路径。

  1. 编写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结尾,需要修改循环条件中的通配符或将其替换成实际的文件名。

  1. 保存并退出编辑器,crontab将自动读取并执行此定时任务。
    该脚本实现的功能是每天凌晨2点删除/var/log目录下所有的log后缀的日志文件。你也可以根据需要修改脚本中LOG_DIR的值来指定不同的目录。
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!