要定期清理 nohup 日志文件,你可以使用以下幾種方法:
cron 定時任務創建一個腳本:
創建一個腳本文件,例如 clean_nohup_logs.sh,內容如下:
#!/bin/bash
# 設置日志文件目錄和文件名前綴
LOG_DIR="/path/to/your/logs"
LOG_PREFIX="nohup.out"
# 獲取當前日期
DATE=$(date +%Y%m%d)
# 刪除指定日期之前的日志文件
find "$LOG_DIR" -name "${LOG_PREFIX}.*" -type f -mtime +7 -exec rm -f {} \;
這個腳本會刪除 /path/to/your/logs 目錄下所有以 nohup.out 開頭且修改時間超過7天的文件。
賦予腳本執行權限:
chmod +x clean_nohup_logs.sh
設置 cron 定時任務:
編輯 crontab 文件:
crontab -e
添加一行來每天運行這個腳本:
0 0 * * * /path/to/clean_nohup_logs.sh
這行配置表示每天午夜(00:00)運行一次腳本。
logrotatelogrotate 是一個系統工具,用于管理日志文件的輪轉和清理。你可以配置 logrotate 來處理 nohup.out 文件。
創建 logrotate 配置文件:
創建一個配置文件,例如 /etc/logrotate.d/nohup,內容如下:
/path/to/your/logs/nohup.out {
daily
rotate 7
compress
missingok
notifempty
create 640 root root
}
這個配置表示每天輪轉一次日志文件,保留最近7天的日志文件,并壓縮舊日志文件。
測試 logrotate 配置:
你可以手動測試 logrotate 配置是否正確:
logrotate -f /etc/logrotate.d/nohup
這個命令會強制 logrotate 處理 /etc/logrotate.d/nohup 配置文件中的日志文件。
systemd 定時任務如果你使用的是 systemd,可以創建一個定時任務來清理日志文件。
創建一個 systemd 定時任務文件:
創建一個文件,例如 /etc/systemd/system/clean_nohup_logs.timer,內容如下:
[Unit]
Description=Clean nohup logs daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
創建一個 systemd 服務文件:
創建一個文件,例如 /etc/systemd/system/clean_nohup_logs.service,內容如下:
[Unit]
Description=Clean nohup logs
[Service]
Type=oneshot
ExecStart=/path/to/clean_nohup_logs.sh
重新加載 systemd 配置:
systemctl daemon-reload
啟用并啟動定時任務:
systemctl enable clean_nohup_logs.timer
systemctl start clean_nohup_logs.timer
通過以上方法,你可以定期清理 nohup 日志文件,確保日志文件不會占用過多磁盤空間。