logrotate定時每秒按指定大小切割日志
- 方案說明
- logrotate方案配置
- 回圈切割腳本
- crontab定時任務
- 運行結果
方案說明
系統:Ubuntu Server 20.04
方案:在crontab中添加一個每分鐘都執行的腳本,此腳本每秒使用logrotate切割日志檔案
以JAVA專案為例,在JAR包同級目錄下有如下檔案↓↓↓↓

logrotate方案配置
test-logrotate檔案
/root/Desktop/test/nohup.d/nohup.out
{
size=5M
rotate 10
copytruncate
notifempty
}
說明:用此配置切割/root/Desktop/test/nohup.d/目錄下的nohup.out檔案;當nohup.out大小>=5M時,執行一次切割,最多保留10份(一次切割生成一份新的日志檔案,命名為nohup.out.x,x的取值范圍為1-10);切割完畢后清空nohup.out;如果nohup.out是空的,則不切割,
注意:logrotate只能通過size判斷檔案大小是否滿足切割,至于切割后的檔案大小無法保證,對于如上配置,如果初始的nohup.out大小為500M,logrotate判斷大于5M需要切割,切割出來的新檔案大小還是500M,如果日志檔案增長過快,比如達到了20M/S,那么logrotate每秒切割完后的檔案大小肯定也是≥20M的,遇到這種情況,就需要考慮提高切割的頻率,
回圈切割腳本
test-crontab.sh
#!/bin/bash
for (( i = 0; i < 60; i++ ));
do
/usr/sbin/logrotate /root/Desktop/test/test-logrotate
sleep 1
done
exit 0
說明:回圈執行logrotate切割命令60次,間隔為1秒
crontab定時任務
將腳本加入到crontab中,設定每分鐘執行一次(crontab定時任務執行周期最低為分鐘)
輸入crontab -e

輸入如下命令并保存
* * * * * bash /root/Desktop/test/test-crontab.sh
輸入crontab -l可查看已開啟的定時任務
運行結果
運行.jar檔案,將java控制臺輸出的內容存放至nohup.out檔案
nohup java -jar /root/Desktop/test/logtest-1.0.jar >> /root/Desktop/test/nohup.d/nohup.out 2>&1 &
一段時間過后,日志目錄下的檔案↓↓↓↓

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249835.html
標籤:其他
上一篇:GNS3新手安裝教程
