如何在shell脚本中实现logrotate

Vee*_*anu 18 scripting bash logrotate

测试文件

#!/bin/bash
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)

测试2.sh

#!/bin/bash
while true
do
    sh test.sh >> /script_logs/test.log &
done
Run Code Online (Sandbox Code Playgroud)

我想实现logrotate来控制日志文件的大小,那么如何实现logrotate,如果是上面的情况呢?

cas*_*cas 34

怎么用savelog

它在 debian 和 RH 以及我所知道的几乎所有其他 linux 发行版中都可用。这是一个 /bin/sh shell 脚本,所以也应该在任何其他 unix 上运行。

例如,在编写任何要test.log运行的东西之前savelog -n -c 7 test.log。这将保留 test.log 的 7 个最新非空版本。默认情况下,它将压缩轮换日志(但可以使用 禁用-l)。

如果需要,您可以检查其大小,test.log并且仅savelog当它超过特定大小时才检查。

  • 我在我的任何 RHEL/CentOS 5/6 机器上都没有找到 `savelog`,所以我刚刚[下载了它](https://salsa.debian.org/debian/debianutils/blob/master/savelog)临时的,它似乎可以很好地满足我的需求。 (2认同)
  • 在 debian 发行版上,软件包 debianutils 中有它。 (2认同)

cur*_*ous 13

#!/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
Run Code Online (Sandbox Code Playgroud)

我已经删除了“&”,因为它可能会导致问题。