使用场景:
使用nohup ./xxx > 123.log 2>&1 &
执行程序后,123.log会随着时间的持续越来越大,那么如何在不影响原来程序的情况下,不重启,达到轮转日志的目的呢,并且是系统级的配置,无需修改程序。
解决方法:
sudo vim /etc/logrotate.d/wx_services
/wx/ipad/run.log
/wx/LangBot-master/run.log {
# 每天轮转一次
daily
# 保留30天的日志
rotate 30
# 文件达到100MB也触发轮转(双重保险)
size 100M
# 轮转时压缩旧日志(节省空间)
compress
# 压缩时使用gzip格式
compressext .gz
# 轮转后保留原始文件(不影响服务输出)
copytruncate
# 空文件也轮转(避免日志丢失)
notifempty
# 创建新日志文件时保持相同权限
create 644 root root
# 轮转日志的命名格式(带日期)
dateext
dateformat -%Y%m%d
}
# 测试配置是否正确(无报错即正常)
sudo logrotate -d /etc/logrotate.d/wx_services
# 手动执行一次轮转(立即生效)
sudo logrotate -f /etc/logrotate.d/wx_services
修改配置后无需重启,他的本质是crontab去执行,如果你想立即生效,可以手动执行一次轮转。