nohup 命令用于在后臺運行程序,即使關閉終端或斷開連接,程序也會繼續運行。默認情況下,nohup 會將輸出重定向到名為 nohup.out 的文件中。隨著時間的推移,這個文件可能會變得非常大,因此需要進行日志切割。
以下是使用 logrotate 工具進行日志切割的方法:
確保已經安裝了 logrotate。在大多數 Linux 發行版中,它已經預裝了。如果沒有安裝,可以使用以下命令安裝:
對于基于 Debian 的系統(如 Ubuntu):
sudo apt-get install logrotate
對于基于 RHEL 的系統(如 CentOS):
sudo yum install logrotate
創建一個名為 logrotate.conf 的配置文件,或者編輯 /etc/logrotate.conf 文件。在這個文件中,添加以下內容:
/path/to/your/nohup.out {
daily
rotate 7
compress
missingok
notifempty
create 0640 user group
}
這里的配置表示每天切割一次日志,保留最近 7 天的日志文件,壓縮舊日志文件,如果日志文件不存在則不報錯,如果日志文件為空則不進行切割,以及創建新的日志文件時的權限和屬主。
請根據實際情況修改 /path/to/your/nohup.out 為您的 nohup.out 文件的實際路徑,以及修改 user 和 group 為您希望的屬主和屬組。
創建一個名為 logrotate.d 的目錄(如果尚不存在),并將 logrotate.conf 文件移動到該目錄中:
sudo mkdir /etc/logrotate.d
sudo mv /etc/logrotate.conf /etc/logrotate.d/nohup
現在,logrotate 將根據配置文件自動切割 nohup.out 日志文件。您可以通過運行以下命令手動觸發日志切割:
sudo logrotate -f /etc/logrotate.d/nohup
這里的 -f 選項表示強制進行日志切割。
通過以上步驟,您可以實現 nohup 命令的日志切割。請注意,這些步驟適用于大多數 Linux 發行版,但某些發行版可能需要稍作調整。