定时任务都是系统级的,所以用用户级命令corntab -l是看不到的
1./etc/cron.d/目录下的armbian-truncate-logs
1 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 2 3 */15 * * * * root /usr/lib/armbian/armbian-truncate-logs 4 @reboot root /usr/lib/armbian/armbian-truncate-logs
作用:每15分钟执行 截断脚本
截断脚本作用:空间占用超75%,进行旧日志删除和截断,但还会先持久化到emmc即/var/log.hdd,即下面这行
1 /usr/lib/armbian/armbian-ramlog write >/dev/null 2>&1
觉得太频繁可以注释掉这行
可以看出又调用了另一个脚本armbian-ramlog里的方法使用参数wirte,经查看实际调用的是syncToDisk ()方法,主要是这一段
1 if [ "$USE_RSYNC" = true ]; then 2 ${NoCache} rsync -aXWv \ 3 --exclude "lost+found" --exclude armbian-ramlog.log \ 4 --exclude 'journal*' --one-file-system \ 5 --links \ 6 ${XTRA_RSYNC_TO[@]+"${XTRA_RSYNC_TO[@]}"} \ 7 $RAM_LOG/ $HDD_LOG/ 2>&1 | $LOG_OUTPUT 8 else 9 rm -f $RAM_LOG/journal # linked journal cannot copied onto itself, it will be re-created below 10 ${NoCache} cp -rfup $RAM_LOG -T $HDD_LOG 2>&1 | $LOG_OUTPUT 11 fi
--exclude排除了几项,特别是armbian-ramlog.log,防止出现循环
默认用rsync,可设置不用,则使用更轻量的cp命令
2./etc/cron.daily/ 目录下armbian-ram-logging
1 #!/bin/sh 2 # Only run on systems where logrotate is a cron job 3 systemctl is-active --quiet logrotate.timer && exit 0 4 /usr/lib/armbian/armbian-ramlog write >/dev/null 2>&1
每天同步内存到emmc,也是调用armbian-ramlog的syncToDisk ()方法
这个可以保留
3.系统服务
/lib/systemd/system/armbian-ramlog.service,它开机会创建zram盘,然后从emmc的/var/log.hdd中load数据到zram的/var/log路径下,完成开机初始化。