【发布时间】:2017-12-29 17:53:03
【问题描述】:
我正在编写一个 shell 脚本,利用 logrotate.conf 实用程序根据大小轮换日志文件。
#!/bin/bash
FILENAME=/xyz/console.log
while :
do
FILESIZE=$(du -h "$FILENAME")
####FILESIZE=$(stat -c%s "$FILENAME")
if [[ $FILESIZE > 10K ]];
then
echo "$FILENAME is too large = $FILESIZE"
echo "$(date ) is here"
cd "/etc"
$sudo logrotate -f logrotate.conf
echo "$ Newer version of log file is created"
else
echo "Log limit is not reached"
fi
sleep 60s
done
exit 0
它不会打印else 块,即使大小小于 10K。在所有情况下,它都在执行 if 块并旋转日志,即使是 4.0K。只有当日志文件为零字节时,它才会打印else 部分,即:
未达到日志限制
【问题讨论】:
-
为什么不使用
stat或du(没有-h)?问题是du也会带来文件名,除非你使用cut -f 1。理想的方法是以字节为单位获取值并进行比较。