logrotate 切割日志的两种策略 copytruncate 和 sendsignal

优先使用sendsignal,次之看程序是否自带了轮转日志支持(比如:rclone),最无解才使用copytr…

特性copytruncatesendsignal(信号通知)
工作原理复制文件内容 → 清空原文件重命名原文件 → 创建新文件 → 通知进程
文件操作复制 + 截断移动(重命名)+ 创建
进程通知不需要需要(通常 SIGHUP/USR1)
原子性非原子操作原子操作(重命名是原子的)
日志丢失可能有少量丢失理论上零丢失
大文件性能较差(需复制)优秀(仅重命名)
适用场景兼容性好,不支持信号的进程也可以轮转日志。支持信号处理的进程,比如nginx

注册轮转:sudo vim /etc/logrotate.d/rclone-s3,文件具体内容如下

/data/www/log/s3Files.log {
    monthly
    missingok
    rotate 999
    nocompress
    notifempty
    copytruncate
    create 640 nginx adm
    dateext
    dateformat .%Y%m
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注