aarch64 下 logrotate 交叉编译及配置使用

在此不对logrotate 用来做什么进行说明, 网上资料很多

参考文章 

https://www.cnblogs.com/miaocbin/p/11540312.html

https://blog.****.net/wennuanddianbo/article/details/74502700

接下来就是我自己所做的,并成功使用到我司产品上的

通过参考资料及网上的其它资料(在此不一一例举)可知, logrotate 要能自动正确的工作,需要依赖几个工具

以我的开发平台为例, 使用了 petalinux(yocto) 来制作根文件系统,

a. 通过 petalinux-config -c rootfs 来配置 popt, 使用 buildroot 制作根文件系统的, 方法基本一样

b. 通过 petalinux-config -c busybox 来配置 cond crontab 两个命令,buildroot 下使用 make busybox-menuconfig 进行配置

1. POP  ---libpopt.so.0.0.0 库, 软链接为  libpopt.so.0

aarch64 下 logrotate 交叉编译及配置使用
2. crond  crontab 服务进程

3. crontab 配置 周期性高度 logrotate 执行的命令

aarch64 下 logrotate 交叉编译及配置使用

接下来需交叉编译logrotate, 该工具依赖于 popt 的头文件, 编译时需要指定相关的头文件,本人是这样使用的

切换到 logrotate 源码目录下(https://github.com/logrotate/logrotate)
INC_PATH=<myrootfs>/usr/include
POPT_LIB_PATH=<mypetalinux>/build/tmp/sysroots-components/aarch64/popt

./autogen.sh
./configure --build=x86_64-linux --host=aarch64-xilinx-linux LDFLAGS=-L${POPT_LIB_PATH}/usr/lib CPPFLAGS=-I${INC_PATH} --prefix=${PWD}/install

make 

make install 

编译完成把生成的 logrotate 可执行文件放到rootfs/usr/sbin/logrotate 中与打包根文件系统一起打包

此外, 要自动执行相应命令, 在制作根文件系统前还需要进行一些配置及命令执行

logrotate 配置文件 /etc/logrotate.conf

/var/log/app.log {
    daily
    compress
    delaycompress 
    missingok
    notifempty 
    size=10M
    rotate 10
    copytruncate
    dateext
    dateformat -%Y-%m-%d-%H%M
}

aarch64 下 logrotate 交叉编译及配置使用

针对 logrotate 周期性调度的 cron 配置文件 /etc/logrotate.cron

*/5 * * * * /usr/sbin/logrotate -l /var/log/logrotae.log /etc/logrotate.conf

aarch64 下 logrotate 交叉编译及配置使用

在第一个用户态应用程序启动前增加如下命令行

CRON_SPOOL=/var/spool/cron/crontabs
CRONTAB_FILE=/etc/logrotate.cron

mkdir -p ${CRON_SPOOL}
crond -b -c ${CRON_SPOOL}
crontab ${CRONTAB_FILE}