在Linux中,nohup
命令用于在后臺運行程序,即使關閉終端或斷開連接也不會終止
myapp.log
。touch myapp.log
nohup
命令運行你的程序,并將輸出重定向到日志文件。例如,如果你的程序是./myapp
,則可以這樣運行:nohup ./myapp > myapp.log 2>&1 &
這里,>
表示將標準輸出重定向到myapp.log
,2>&1
表示將標準錯誤重定向到標準輸出(即myapp.log
),最后的&
表示在后臺運行。
logrotate
工具。首先,確保已經安裝了logrotate
。在大多數Linux發行版中,它應該已經預裝了。如果沒有,可以使用以下命令安裝:對于基于Debian的系統(如Ubuntu):
sudo apt-get install logrotate
對于基于RPM的系統(如CentOS、Fedora):
sudo yum install logrotate
logrotate
配置文件,例如/etc/logrotate.d/myapp
,并添加以下內容:/path/to/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
這里的配置表示:
daily
:每天輪轉日志。rotate 7
:保留7個輪轉日志。compress
:壓縮舊的日志文件。missingok
:如果日志文件不存在,不會產生錯誤。notifempty
:如果日志文件為空,不進行輪轉。create 640 root adm
:創建新的日志文件,權限為640,屬主為root,屬組為adm。logrotate
定時任務已啟用。編輯/etc/cron.daily/logrotate
文件,確保其中包含以下內容:#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
logrotate
將自動處理myapp.log
文件的輪轉。你可以手動運行logrotate
命令來測試配置是否正確:sudo logrotate /etc/logrotate.d/myapp
這樣,通過結合使用nohup
和logrotate
,你可以在Linux中實現日志輪轉。