linux定时清空文件内容,定时记录文件大小

喜欢ヅ旅行 2023-01-17 07:42 312阅读 0赞

文章目录

  • 说明
  • 添加任务计划说明
  • 代码说明
  • 结果展示

说明

该脚本需要每小时执行一次(添加到任务计划),当时间为0点或12点时,将目标目录下的所有文件内容清空,
但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时间和日期命名的文件
中,需要考虑目标目录下二级、三级等子目录的文件,该脚本只能展示一级,二级三级下的文件是不会
被扫描到的!!! 如果有二级,三级,增加一个下面的for功能,或者下面if里面的模块重复n次!

添加任务计划说明

crontab -e:编辑当前计划任务
可以直接把下面代码复制进去保存即可【每天每小时10分执行】

  1. #min hour day month week sh_file
  2. 10 * * * * sh /root/ccx/done.sh

保存以后执行
crontab -l:查看
在这里插入图片描述

代码说明

  1. [root@centos76_1 ccx]# cat done.sh
  2. #!/bin/bash
  3. #################################################################
  4. #每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内容清空,
  5. #但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时间和日期命名的文件
  6. #中,需要考虑目标目录下二级、三级等子目录的文件
  7. ################################################################
  8. # 创建时间文件
  9. logfile=/tmp/`date +%H-%F`.log
  10. # 查看时间【小时】
  11. n=`date +%H`
  12. if [ $n -eq 00 ] || [ $n -eq 12 ]
  13. then
  14. #通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作
  15. # 下面的/data/log为需要操作的目录
  16. for i in `find /data/log/ -type f`
  17. do
  18. # 写空
  19. true > $i
  20. done
  21. else
  22. # 下面的/data/log为需要操作的目录
  23. for i in `find /data/log/ -type f`
  24. do
  25. #大小追加到这个文件下
  26. du -sh $i >> $logfile
  27. done
  28. fi
  29. [root@centos76_1 ccx]#

结果展示

可以手动执行一次该脚本的,然后去tmp目录下就可以看到统计的信息了哦。
【注:该文件每小时会生成一个】

  1. [root@centos76_1 ~]# cd /tmp/
  2. [root@centos76_1 tmp]# date +%H
  3. 17
  4. [root@centos76_1 tmp]# ls | grep 17
  5. 17-2021-04-27.log
  6. [root@centos76_1 tmp]# cat 17-2021-04-27.log
  7. 4.0K /data/log/test1
  8. 4.0K /data/log/test2
  9. 4.0K /data/log/test3
  10. 0 /data/log/test4
  11. 0 /data/log/test5
  12. [root@centos76_1 tmp]#

发表评论

表情:
评论列表 (有 0 条评论,312人围观)

还没有评论,来说两句吧...

相关阅读