nohup 命令用于在 Linux 系統中運行命令,使其在用戶退出登錄后繼續運行
> 重定向符將輸出重定向到日志文件。例如,如果你想將命令的輸出保存到名為 output.log 的文件中,可以使用以下命令:nohup your_command > output.log 2>&1 &
這里,your_command 是你想運行的命令。> 將標準輸出重定向到 output.log 文件,2>&1 將標準錯誤輸出重定向到標準輸出(即 output.log 文件),最后的 & 符號使命令在后臺運行。
logrotate 工具管理日志文件。logrotate 是一個用于管理日志文件的系統工具,它可以自動壓縮、刪除和輪換日志文件。要配置 logrotate,請創建一個名為 /etc/logrotate.d/your_command 的配置文件,并添加以下內容:/path/to/output.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 user group
}
這里,/path/to/output.log 是你的日志文件的路徑。daily 表示每天輪換日志文件,rotate 7 表示保留最近 7 天的日志文件,compress 表示壓縮舊的日志文件,missingok 表示如果日志文件丟失,不要報錯,notifempty 表示如果日志文件為空,不進行輪換,create 0640 user group 表示創建新的日志文件,權限為 0640,屬主為用戶(user),屬組為組(group)。
cron 任務或編寫腳本來定期檢查日志文件的大小,并根據需要刪除舊的日志文件。例如,你可以創建一個名為 cleanup_logs.sh 的腳本,內容如下:#!/bin/bash
LOG_PATH="/path/to/output.log"
MAX_SIZE=100M
MAX_FILES=7
if [ -f "$LOG_PATH" ]; then
FILE_SIZE=$(stat -c%s "$LOG_PATH")
if [ $FILE_SIZE -gt $MAX_SIZE ]; then
mv "$LOG_PATH" "${LOG_PATH}.$(date +%Y%m%d%H%M%S)"
fi
fi
LOG_FILES=$(ls -1t /path/to/*.log | tail -n +$MAX_FILES)
for LOG_FILE in $LOG_FILES; do
rm "$LOG_FILE"
done
然后,為腳本添加可執行權限:
chmod +x cleanup_logs.sh
最后,將腳本添加到 cron 任務中,以便定期運行。例如,每天凌晨 1 點運行腳本:
0 1 * * * /path/to/cleanup_logs.sh
通過以上方法,你可以有效地管理 nohup 命令生成的日志文件。