实现每周三和每周日执行清理 /NFS 目录的任务,你可以使用 shell 脚本结合 cron 定时任务。下面是一个示例脚本,它会删除 /NFS 目录下所有名称形如 XBK_FULL_YYYYMMDDHHMMSS 和 XBK_INCR_YYYYMMDDHHMMSS 的目录,其中日期早于当前系统日期。
步骤 1: 创建 Shell 脚本
-
创建脚本文件:
- 创建一个名为
cleanup.sh
的脚本文件。
- 创建一个名为
-
编写脚本内容:
- 使用文本编辑器编写以下脚本内容。
#!/bin/bash
# 定义 NFS 目录路径
NFS_DIR="/NFS"
# 获取当前日期,格式为 YYYYMMDD
CURRENT_DATE=$(date +%Y%m%d)
# 遍历 NFS 目录下的所有子目录
for dir in "$NFS_DIR"/*; do
# 提取目录名称
dir_name=$(basename "$dir")
# 检查目录名称是否符合预期的格式
if [[ $dir_name =~ ^(XBK_FULL|XBK_INCR)_([0-9]{8}) ]]; then
# 提取目录中的日期
dir_date="${BASH_REMATCH[2]}"
# 比较目录日期与当前日期
if [[ $dir_date -lt $CURRENT_DATE ]]; then
# 删除过期的目录
rm -rf "$dir"
echo "Deleted directory: $dir"
fi
fi
done
步骤 2: 设置权限
- 赋予执行权限:
- 使用
chmod
命令给脚本添加执行权限。
chmod +x cleanup.sh
- 使用
步骤 3: 配置 Cron 定时任务
-
打开 crontab 编辑器:
- 使用
crontab -e
命令打开 crontab 文件编辑器。
- 使用
-
添加定时任务:
- 添加以下行来配置每周三和每周日的定时任务。
0 0 * * 3,0 /path/to/cleanup.sh
- 这里的
0 0 * * 3,0
表示每周三(3)和周日(0)的午夜(0 0)执行脚本。
解释
- 这个脚本现在会遍历
/NFS
目录下的所有子目录,并检查每个子目录的名称是否符合XBK_FULL_YYYYMMDDHHMMSS
或XBK_INCR_YYYYMMDDHHMMSS
的格式。 - 如果子目录的日期早于当前日期,脚本会删除该目录。
- 定时任务配置了每周三和周日午夜执行清理脚本。
总结
- 脚本使用正则表达式
(XBK_FULL|XBK_INCR)_([0-9]{8})
来匹配两种类型的目录名称。 - 该脚本可以处理
XBK_FULL_YYYYMMDDHHMMSS
和XBK_INCR_YYYYMMDDHHMMSS
形式的目录。