shell实现
当文件超过设定的大小之后,删除该文件
1. 监控并删除单个文件
# 设定文件路径
file_dir="文件路径"
# 取文件大小
size=`wc -c $file_dir | awk '{print $1}'`
# 判断文件大小,大于200MB自动删除
# 200 * 1024 * 1024 单位B
if [ $size -gt 209715200 ];
then
rm -f $file_dir
fi
# 如将以上代码写入file_y.sh
# 写到定时任务,实现了每分钟监控一次该文件,超过200MB则删除
# crontab -e
# * * * * * sh /file_y.sh
2. 监控并删除多个文件
# 设定文件路径 空格隔开
file_dir=("文件1" "文件2" "文件3" "文件...")
# 遍历文件列表
for file in ${file_dir[@]}
do
# 取文件大小
size=`wc -c $file | awk '{print $1}'`
# 判断文件大小,大于200MB自动删除
# 200 * 1024 * 1024 单位B
if [ $size -gt 209715200 ];
then
rm -f $file
fi
done
# 如将以上代码写入file_y.sh
# 写到定时任务,实现了每分钟检测一次指定的多个文件,超过200MB则删除
# crontab -e
# * * * * * sh /file_y.sh
3. 无休止的监控并删除多个文件
- 因为cron定时任务是以分钟为单位的
- 所以要实现秒级监控,是需要设置60条重复任务
- 这种情况建议单独开一个进程来实现该功能
- 其他语言都可以实现
# 设定文件路径 空格隔开
file_dir=("文件1" "文件2" "文件3" "文件...")
# 遍历文件列表
while true
do
for file in ${file_dir[@]}
do
# 取文件大小
size=`wc -c $file | awk '{print $1}'`
# 判断文件大小,大于200MB自动删除
# 200 * 1024 * 1024 单位B
if [ $size -gt 209715200 ];
then
rm -f $file
fi
done
# 暂停1秒继续
sleep 1
done