溫馨提示×

centos nohup日志輪轉方法

小樊
62
2025-04-29 00:18:26
欄目: 智能運維

在 CentOS 系統中,使用 nohup 命令運行程序時,日志文件可能會變得非常大。為了防止日志文件過大,可以使用日志輪轉工具來自動管理日志文件。以下是配置日志輪轉的方法:

使用 logrotate 工具

logrotate 是一個用于管理日志文件的系統工具,可以自動壓縮、刪除和輪轉日志文件。以下是如何配置 logrotate 來管理 nohup 生成的日志文件:

  1. 創建日志文件目錄(如果還沒有)

    mkdir -p /var/log/myapp
    
  2. 運行程序并生成日志文件

    nohup your_command > /var/log/myapp/myapp.log 2>&1 &
    
  3. 創建 logrotate 配置文件: 在 /etc/logrotate.d/ 目錄下創建一個新的配置文件,例如 myapp

    sudo nano /etc/logrotate.d/myapp
    
  4. 編輯配置文件: 在配置文件中添加以下內容:

    /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。
  5. 測試配置: 可以手動測試 logrotate 配置是否正確:

    sudo logrotate -f /etc/logrotate.d/myapp
    

使用 systemd 服務管理日志

如果你使用 systemd 來管理服務,可以創建一個 systemd 服務單元文件,并在其中配置日志輪轉。

  1. 創建 systemd 服務單元文件: 在 /etc/systemd/system/ 目錄下創建一個新的服務單元文件,例如 myapp.service

    sudo nano /etc/systemd/system/myapp.service
    
  2. 編輯服務單元文件: 在服務單元文件中添加以下內容:

    [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
    
  3. 重新加載 systemd 配置

    sudo systemctl daemon-reload
    
  4. 啟動并啟用服務

    sudo systemctl start myapp
    sudo systemctl enable myapp
    
  5. 配置 systemd 日志輪轉systemd 默認會處理日志輪轉,但你可以通過編輯 /etc/systemd/journald.conf 文件來調整日志保留策略:

    [Journal]
    SystemMaxUse=500M
    SystemKeepFree=100M
    SystemMaxFileSize=50M
    SystemMaxFiles=5
    

通過以上步驟,你可以有效地管理 nohup 命令生成的日志文件,防止它們變得過大。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女