ディレクトリサイズを確認するスクリプトの作成

ディレクトリサイズを確認するスクリプトの作成

Raspberry PiでRaspbianを実行する際に問題があります。私のSDカードには16GBのスペースしかないので、しばらくすると内部ログは/var/logSDのすべてのスペースを使います。 Raspberry Piではほとんど何もできないので、/var/log毎日ディレクトリサイズを確認し、そのデータを含む電子メールを送信してスペースを使いすぎる場合は、いくつかのログを削除できるスクリプトを作成しました。du -h /var/log私のスクリプトが実行されていないため、問題があります。

これがスクリプトです。

#!/bin/bash
folder=/var/log
folder_size="du -h /var/log"
maxsize=10000000
emailAddr="[email protected]"
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

ベストアンサー1

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
#

そのため、カットをパイピングすると、以下のように数値要素を抽出できます。

# 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)

おすすめ記事