掃瞄某個目錄下的檔案,發現超過指定大小即清空
1)掃瞄目錄下的檔案
2)判斷檔案大小
3)清空大於指定檔案的內容
以byte為單位顯示檔案大小,然後和20m大小做對比. 20m換算成位元組為20971520這裡判斷是否大於20m,大於則使用echo 語句將對應檔案置空
20m=20 * 1024 * 1024=20971520 echo `expr 20 \* 1024 \* 1024`
方法1
可以使用dd命令建立乙個20m的檔案,測試下:
ddif=/dev/zero of=/root/test/1.txt bs=1m count=20
[root@admin test]#
ddif=/dev/zero of=/root/test/1.txt bs=1m count=20
20+0 records in
20+0
records out
20971520 bytes (21 mb) copied, 0.0202923 s, 1.0 gb/s
[root@admin test]# ll
-rw-r--r-- 1 root root 20971520 nov 13
10:13
1.txt
[root@admin test]#
du -sh
1.txt
20m
1.txt
處理指令碼:
#!/bin/bashfor size in $(ls -l /root/test/*
|awk '')
do for file in $(ls -l /root/test/* | grep $size |awk '')
doif [ $ -gt 62914560 ];then
echo $ $
echo "" > $
fidone
done
結合crontab進行定時執行
[root@admin test]# chmod755 scan_gt_20.sh
[root@admin test]# /bin/bash -x scan_gt_20.sh
[root@admin test]# crontab -e
02 * * 6 /bin/bash -x /root/test/scan_gt_20.sh > /dev/null
2>&1
方法2"find -size" -size 選項用於查詢滿足指定的大小條件的檔案(注意不查詢目錄), +表示大於, -表示小於, 沒有+或-表示正好等於。
可以使用dd命令建立乙個20m的檔案,測試下:
[root@admin test]# ddif=/dev/zero of=/root/test/1.txt bs=1m count=21
21+0 records in
21+0
records out
22020096 bytes (22 mb) copied, 0.0259113 s, 850 mb/s
[root@admin test]#
find ./ -type f -size +20m
./1.txt
[root@admin test]#
處理指令碼
[root@admin test]# vi scan_gt_20.sh#!/bin/bash
for i in $(find /root/test/*
-size +20m);
do echo " " > $i;
done
[root@admin test]# crontab -e02 * * 6 /bin/bash -x /root/test/scan_gt_20.sh > /dev/null
2>&1
shell指令碼自動清理超過指定大小的檔案
先說下背景 我們線上用的squid,根據經驗值如果長時間執行則快取目錄下的swap.state會慢慢變大,一旦超過60m,squid的效能就會急劇下降,因此需要定時去清理大於60m的swap.state檔案。由此引出需求,查詢cache目錄下的所有大於60m的swap.state檔案並清除,即 1....
自動清理超過指定大小的檔案 shell指令碼
使用du命令實現 生成幾個測試檔案 root localhost cache dd if dev zero of testfile1 bs 1m count 50 50 0 records in 50 0 records out 52428800 bytes 52 mb copied,0.14518...
linux下自動金鑰
實現從主機a免密碼登陸到主機b 1.在主機a ssh 目錄下執行命令 ssh keygen t rsa 生成過程中,一路回車 生成兩個檔案id rsa和id rsa pub,這兩個檔案實際上是乙個金鑰對,id rsa是私鑰,id rsa pub是公鑰 2.將檔案id rsa pub從主機a拷貝 可以...