Scripting

創建檢查目錄大小的腳本

  • November 29, 2016

我的樹莓派有問題,我的 sd 卡只有 16gb 的空間,所以一段時間後 /var/log 中的日誌使用了 sd 上的所有空間,而我的樹莓派幾乎無法做任何事情,所以我嘗試每天創建一個用於檢查/var/log 目錄維度的腳本,然後給我發送一封包含這些數據的郵件,這樣當使用的空間過多時我可以刪除一些日誌,但是我對命令 du -h /var/ 有一些問題記錄因為腳本沒有執行它,任何人都可以幫助我嗎?

這是腳本

#!/bin/bash

folder=/var/log

folder_size="du -h /var/log"

maxsize=10000000

emailAddr="mymail@gmail.com"

while true; do

 if [ $folder_size -ge $maxsize ]; then
   echo size is over $maxsize kilobytes

   subject="DIMENSIONE DELLA CARTELLA $folder HA SUPERATO IL LIMITE!"
   echo "La dimensione della cartella $folder ha superato il limite di $maxsize" | mail -s "$subject" $emailAddr

   exit
 else
   echo size is under $maxsize kilobytes

   subject="dimensione della cartella $folder"
   echo "La dimensione della cartella $folder è di $folder_size - $maxsize" | mail -s "$subject" $emailAddr 

 fi

 sleep 86400 # in seconds = 1 day
done

我的作業系統是 raspbyan

du -h /var/log(您需要使用反引號或 $(xxx),而不是雙引號)將返回如下​​輸出。但是您只想確定大小。

# du -h /var/log
2.6M    /var/log/httpd
4.0K    /var/log/ntpstats
14M     /var/log/sa
4.0K    /var/log/mail
26M     /var/log/audit
46M     /var/log
#

而如果您執行du -s /var/log,您將看到輸出,例如

# du -s /var/log
46256   /var/log
#

因此,通過管道進入 cut,您可以提取數字元素,如下所示。

# du -s /var/log | cut -f1
46256
#

意味著腳本中的行應該從

folder_size="du -h /var/log"

folder_size=`du -s /var/log | cut -f1`

或者,使用不推薦使用的語法

folder_size=$(du -s /var/log | cut -f1)

引用自:https://unix.stackexchange.com/questions/326896