在 CentOS 系統中,使用 nohup
命令運行程序時,日志文件可能會變得非常大。為了防止日志文件過大,可以使用日志輪轉工具來自動管理日志文件。以下是配置日志輪轉的方法:
logrotate
工具logrotate
是一個用于管理日志文件的系統工具,可以自動壓縮、刪除和輪轉日志文件。以下是如何配置 logrotate
來管理 nohup
生成的日志文件:
創建日志文件目錄(如果還沒有):
mkdir -p /var/log/myapp
運行程序并生成日志文件:
nohup your_command > /var/log/myapp/myapp.log 2>&1 &
創建 logrotate
配置文件:
在 /etc/logrotate.d/
目錄下創建一個新的配置文件,例如 myapp
:
sudo nano /etc/logrotate.d/myapp
編輯配置文件: 在配置文件中添加以下內容:
/var/log/myapp/myapp.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root root
}
解釋:
daily
: 每天輪轉一次日志文件。rotate 7
: 保留最近7個輪轉的日志文件。compress
: 壓縮舊的日志文件。delaycompress
: 延遲壓縮,直到下一次輪轉。missingok
: 如果日志文件丟失,不會報錯。notifempty
: 如果日志文件為空,不進行輪轉。create 640 root root
: 創建新的日志文件,權限為640,屬主和屬組為root。測試配置:
可以手動測試 logrotate
配置是否正確:
sudo logrotate -f /etc/logrotate.d/myapp
systemd
服務管理日志如果你使用 systemd
來管理服務,可以創建一個 systemd
服務單元文件,并在其中配置日志輪轉。
創建 systemd
服務單元文件:
在 /etc/systemd/system/
目錄下創建一個新的服務單元文件,例如 myapp.service
:
sudo nano /etc/systemd/system/myapp.service
編輯服務單元文件: 在服務單元文件中添加以下內容:
[Unit]
Description=My Application
After=network.target
[Service]
ExecStart=/path/to/your_command
StandardOutput=append:/var/log/myapp/myapp.log
StandardError=append:/var/log/myapp/myapp.log
Restart=always
User=your_user
Group=your_group
[Install]
WantedBy=multi-user.target
重新加載 systemd
配置:
sudo systemctl daemon-reload
啟動并啟用服務:
sudo systemctl start myapp
sudo systemctl enable myapp
配置 systemd
日志輪轉:
systemd
默認會處理日志輪轉,但你可以通過編輯 /etc/systemd/journald.conf
文件來調整日志保留策略:
[Journal]
SystemMaxUse=500M
SystemKeepFree=100M
SystemMaxFileSize=50M
SystemMaxFiles=5
通過以上步驟,你可以有效地管理 nohup
命令生成的日志文件,防止它們變得過大。