nohup
命令在 Linux 中用于在后臺運行程序,即使關閉終端或斷開連接,程序也會繼續運行。默認情況下,nohup
會將輸出重定向到 nohup.out
文件中。為了實現日志輪轉,可以使用 logrotate
工具來管理日志文件的大小和數量。
以下是如何使用 logrotate
來實現 nohup
命令的日志輪轉的步驟:
創建日志文件:
使用 nohup
命令啟動你的程序,并將輸出重定向到一個日志文件。例如:
nohup your_command > /path/to/your/logfile.log 2>&1 &
配置 logrotate
:
創建或編輯 /etc/logrotate.d/
目錄下的配置文件,或者創建一個新的配置文件。例如,創建一個名為 your_command
的配置文件:
sudo nano /etc/logrotate.d/your_command
在配置文件中添加以下內容:
/path/to/your/logfile.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
解釋:
daily
:每天輪轉一次日志文件。rotate 7
:保留7個輪轉后的日志文件。compress
:壓縮輪轉后的日志文件。delaycompress
:延遲壓縮,直到下一次輪轉。missingok
:如果日志文件丟失,不會報錯。notifempty
:如果日志文件為空,不進行輪轉。create 640 root adm
:創建新的日志文件,權限為640,屬主為root,屬組為adm。測試 logrotate
配置:
你可以手動運行 logrotate
來測試配置是否正確:
sudo logrotate -f /etc/logrotate.d/your_command
這會強制執行一次日志輪轉。
自動輪轉:
logrotate
通常會每天自動運行一次,檢查并輪轉符合條件的日志文件。你可以通過查看 /etc/cron.daily/logrotate
文件來確認這一點。
通過以上步驟,你可以使用 logrotate
工具來實現 nohup
命令的日志輪轉,確保日志文件不會無限增長,并且可以方便地管理和壓縮舊日志文件。