黄岛区建设局网站,一个网站一年多少钱,店铺推广软文300字,怎么用php做网站方案前言
我们在服务器运行一些服务经常会产生很多临时文件#xff0c;而有些临时文件不定期处理很容易就打满了整个磁盘#xff1b;所以有必要去定期清理#xff0c;基于这个需求我们就可以搞一个脚本结合crontab或者服务调度这些来使用#xff1b;
脚本实现
#!/bin/bash# …前言
我们在服务器运行一些服务经常会产生很多临时文件而有些临时文件不定期处理很容易就打满了整个磁盘所以有必要去定期清理基于这个需求我们就可以搞一个脚本结合crontab或者服务调度这些来使用
脚本实现
#!/bin/bash# cleanup_old_files - 清理指定目录中指定天数之前的旧文件
# $1: 目录名称
# $2: 天数
# $3: 可选关键字用于匹配文件名function cleanup_old_files() {local dir$1 # 目录名称local days$2 # 天数local keyword$3 # 匹配文件名的关键字# 参数有效性检查if [ -z $dir ]; thenecho 错误目录参数为空.return 1fiif [ ! -d $dir ]; thenecho 错误目录 $dir 不存在.return 1fiif ! [[ $days ~ ^[0-9]$ ]]; thenecho 错误天数参数无效.return 1fi# 如果未指定天数则默认为当天if [ -z $days ]; thendays0fi# 构建查找命令根据 $days 的值进行区分if [ $days -eq 0 ]; thenfind_cmdfind -L \$dir\ -type d -o -type f -mtime 0elsefind_cmdfind -L \$dir\ -type d -o -type f -mtime $daysfi# 如果指定了关键字则加入查找命令中if [ -n $keyword ]; thenfind_cmd -name \*$keyword*\fi# 打印完整命令echo 执行命令: $find_cmd# 执行查找并删除文件if [ $days -eq 0 ]; thenecho 正在清理目录 $dir 中当天创建的$(if [ -n $keyword ]; then echo 包含关键字 $keyword 的 ; else echo 所有 ; fi)文件...elseecho 正在清理目录 $dir 中 $days 天之前创建的$(if [ -n $keyword ]; then echo 包含关键字 $keyword 的 ; else echo 所有 ; fi)文件...fi# 通过-exec rm -rf {} 删除查找到的文件if eval $find_cmd -exec rm -v -rf {} /dev/null; thenif [ $days -eq 0 ]; thenecho 已删除当天的旧文件.elseecho 已删除 $days 天之前的旧文件.fielseecho 删除失败.return 1fi
}# 示例用法
# cleanup_old_files /path/to/directory 30 log
# cleanup_old_files /path/to/directory 0 log
总结
注意事项1mtime 为0的情况
值得注意的是mtime为0的时候也就是我们想模拟当天不能带修饰符(/-);在Debian和MacOS执行的表现是没有报错但是没有任何操作所以代码里面做了一个区分
注意事项2/tmp为软链的时候
若是find命令想要检索到里面的内容记得带-L,否则没法检索出任何东西
# 在mac下tmp是一个软链链接到/private/tmp
ls -l /tmp
lrwxr-xr-x 1 root wheel 11 Dec 2 19:37 /tmp - private/tmp带上-L之后就能兼容Linux和MacOS两个平台方便本地调试也能测试
这个参数大体的作用就是递归去找所以符号链接也能被检索不带的情况下默认都是只找硬链接符号链接就会直接忽略。
有不对之处请留言谢谢阅读