测试文件
#!/bin/bash
echo "Hello World"
测试2.sh
#!/bin/bash
while true
do
sh test.sh >> /script_logs/test.log &
done
我想实现logrotate来控制日志文件大小,那么如果像上面的情况,如何实现logrotate呢?
答案1
使用怎么样savelog
?
它可以在 debian 和 RH 以及我所知道的几乎所有其他 Linux 发行版中使用。它是一个 /bin/sh shell 脚本,因此也应该在任何其他 unix 上运行。
例如,在编写任何要test.log
运行的内容之前savelog -n -c 7 test.log
。这将保留 test.log 的 7 个最新非空版本。默认情况下,它将压缩轮换日志(但可以使用 禁用-l
)。
如果需要,您可以检查尺寸,test.log
并且仅savelog
在超过特定尺寸时才检查。
答案2
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
我删除了“&”,因为它可能会导致问题。
答案3
我写了一个洛格罗蒂这周末。如果我读过@JdeBP 的,我可能不会关于的很好的答案multilog
。
我专注于它的轻量级并且能够 bzip2 其输出块,例如:
verbosecommand | logrotee \
--compress "bzip2 {}" --compress-suffix .bz2 \
/var/log/verbosecommand.log
不过,还有很多工作要做和测试。
答案4
由于我还无法添加评论接受的答案, A忙碌盒提示,其中du
没有-b
标志:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1