我的 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
}