在centos系統(tǒng)中,當(dāng)我們使用nohup命令運(yùn)行程序時(shí),輸出內(nèi)容通常會(huì)被重定向到一個(gè)名為nohup.out的文件中。隨著時(shí)間推移,該文件可能變得非常龐大,因此有必要對(duì)其進(jìn)行壓縮和清理。以下是一些關(guān)于如何有效管理nohup.out日志文件的方法:
-
使用gzip對(duì)nohup.out進(jìn)行壓縮:
在終端中執(zhí)行如下命令,可以將nohup.out文件壓縮為.gz格式:gzip nohup.out
此操作會(huì)刪除原始nohup.out文件,并生成一個(gè)壓縮后的nohup.out.gz文件。
-
利用logrotate工具進(jìn)行日志管理:
logrotate是一個(gè)專門用于處理日志輪換的系統(tǒng)工具,支持自動(dòng)壓縮、刪除及輪換日志文件。要配置logrotate來(lái)管理nohup.out,請(qǐng)按以下步驟操作:a. 創(chuàng)建一個(gè)新的logrotate配置文件,例如/etc/logrotate.d/myapp,并寫入如下內(nèi)容:
/path/to/your/nohup.out { daily rotate 7 compress missingok notifempty create 640 user group }
上述配置中,/path/to/your/nohup.out代表你的nohup.out文件路徑。設(shè)置項(xiàng)表示每天進(jìn)行一次日志輪換,保留最近7天的日志記錄,啟用壓縮功能,若文件不存在也不報(bào)錯(cuò),空文件不觸發(fā)輪換,同時(shí)創(chuàng)建新文件時(shí)指定權(quán)限和歸屬用戶組。
b. 確認(rèn)logrotate服務(wù)已安裝并處于運(yùn)行狀態(tài)。大多數(shù)centos系統(tǒng)默認(rèn)已安裝logrotate,你可以通過(guò)以下命令查看其運(yùn)行狀態(tài):
systemctl status logrotate
如需啟動(dòng)服務(wù),可使用以下命令:
systemctl start logrotate
-
手動(dòng)編寫腳本定期處理nohup.out:
若你更傾向于不使用logrotate,也可以編寫一個(gè)簡(jiǎn)單的shell腳本來(lái)完成壓縮和清理任務(wù)。例如,創(chuàng)建一個(gè)名為compress_nohup.sh的腳本,并添加如下代碼:#!/bin/bash LOG_FILE="/path/to/your/nohup.out" COMPRESSED_LOG_FILE="${LOG_FILE}.$(date +%Y%m%d%H%M%S)" gzip "$LOG_FILE" mv "${COMPRESSED_LOG_FILE}.gz" "$LOG_FILE.gz"
其中,/path/to/your/nohup.out應(yīng)替換為你實(shí)際的nohup.out路徑。此腳本的作用是將原日志文件壓縮,并以當(dāng)前時(shí)間戳命名壓縮文件,然后將其移動(dòng)至原文件位置。
接下來(lái),為腳本賦予可執(zhí)行權(quán)限:
chmod +x compress_nohup.sh
最后,將該腳本加入定時(shí)任務(wù)計(jì)劃中。編輯crontab:
crontab -e
在打開(kāi)的編輯器中添加以下一行內(nèi)容(表示每天凌晨1點(diǎn)執(zhí)行):
0 1 * * * /path/to/your/compress_nohup.sh
完成保存后,腳本將在每天凌晨1點(diǎn)自動(dòng)運(yùn)行,實(shí)現(xiàn)nohup.out的壓縮與清理。