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
2. crond crontab 服务进程
3. crontab 配置 周期性高度 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
}
针对 logrotate 周期性调度的 cron 配置文件 /etc/logrotate.cron
*/5 * * * * /usr/sbin/logrotate -l /var/log/logrotae.log /etc/logrotate.conf
在第一个用户态应用程序启动前增加如下命令行
CRON_SPOOL=/var/spool/cron/crontabs
CRONTAB_FILE=/etc/logrotate.cron
mkdir -p ${CRON_SPOOL}
crond -b -c ${CRON_SPOOL}
crontab ${CRONTAB_FILE}