以下所有測試均在Ubunt 22.04下測試和嚴重
root@aaa-Inspiron-3847:/etc/logrotate.d# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
root@aaa-Inspiron-3847:/etc/logrotate.d#
我們知道在Linux下,使用下面的指令啟動服務時
bin/ck600svr -c config/ck600svr.properties &
當我們關閉控制台時,服務會自動停止
關閉tab标簽,服務會自動關閉
是以我們經常增加nohup來啟動服務
nohup bin/ck600svr -c config/ck600svr.properties &
這樣當我們關閉控制台時,服務可以背景運作
但是這樣會有個問題,會預設生成一個nohup.out的日志
如果服務長期運作,這個日志檔案會越來越大,以至于無法打開。
解決辦法一:不生成nohup.out檔案
nohup ./bin/ck600svr -c config/ck600svr.properties >/dev/null 2>log & //隻輸出錯誤資訊到日志檔案
nohup ./bin/ck600svr -c config/ck600svr.properties >/dev/null 2>&1 & //無任何資訊輸出
2>&1表示将标準錯誤輸出重定向到标準輸出,這樣,程式或者指令的正常輸出和錯誤輸出就可以在标準輸出輸出。
這樣就沒有nohup.out檔案了,但是我如果還想看nohup.out,還希望nohup能自動拆分是不是就更完美了,于是乎logrotate出場了。
logrotate 程式是一個日志檔案管理工具。用來把舊的日志檔案删除,并建立新的日志檔案,我們把它叫做“轉儲”。我們可以根據日志檔案的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行。
/etc/logrotate.conf 和/etc/logrotate.d/,其中
logrotate.conf 是主要的參數檔案,logrotate.d 是一個目錄,該目錄裡面的所有資料都會被主動讀入/etc/logrotate.conf 當中來進行。另外,在/etc/logrotate.d/ 裡面的檔案中,如果沒有指定一些詳細的設定,則以 /etc/logrotate.conf 的規定來指定為預設值。
vim ck600檢視配置檔案:
logrotate 配置檔案的主要參數
參 緻 | 參數說明 |
daily | 日志的輪替周期是毎天 |
weekly | 日志的輪替周期是每周 |
monthly | 日志的輪控周期是每月 |
rotate數宇 | 保留的日志檔案的個數。0指沒有備份 |
compress | 當進行日志輪替時,對舊的日志進行壓縮 |
create mode owner group | 建立新日志,同時指定新日志的權限與所有者和所屬組.如create 0600 root utmp |
mail address | 當進行日志輪替時.輸出記憶體通過郵件發送到指定的郵件位址 |
missingok | 如果日志不存在,則忽略該日志的警告資訊 |
nolifempty | 如果曰志為空檔案,則不進行日志輪替 |
minsize 大小 | 日志輪替的最小值。也就是日志一定要達到這個最小值才會進行輪持,否則就算時間達到也不進行輪替 |
size大小 | 日志隻有大于指定大小才進行日志輪替,而不是按照時間輪替,如size 100k |
dateext | 使用日期作為日志輪替檔案的字尾,如secure-20130605 |
sharedscripts | 在此關鍵宇之後的腳本隻執行一次 |
prerotate/cndscript | 在曰志輪替之前執行腳本指令。endscript辨別prerotate腳本結束 |
postrolaie/endscript | 在日志輪替之後執行腳本指令。endscripi辨別postrotate腳本結束 |
然後使用 logrotate -f 使配置生效,你學會了麼?