创建一个脚本来检查目录大小

创建一个脚本来检查目录大小

我的 Raspberry Pi 运行 Raspbian 时遇到问题。我的SD卡只有16GB的空间,所以一段时间后里面的日志/var/log就用完了SD上的所有空间。我几乎无法用我的 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
#

因此,通过管道输入 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)

答案2

我知道您正在寻求脚本方面的帮助。我可以建议使用 Logrotate 来观察日志并根据大小和您保留的旋转日志数量来旋转它们吗?

像这样的东西:

/tmp/output.log {
    size 100M
    copytruncate
    create 700 root utmp
    rotate 4
    compress
}

相关内容