1. 默认情况下,nohup日志无固定保存期限
nohup命令默认将输出重定向到当前目录下的nohup.out
文件,若未进行额外配置,该文件会持续累积增长(直到磁盘空间耗尽),没有自动删除或过期机制。
2. 通过logrotate工具控制日志保存时间
Debian系统推荐使用logrotate
工具管理nohup日志,可自定义轮转周期(如每天、每周)和保留天数。常见配置示例如下:
/etc/logrotate.d/nohup
(需手动创建);daily
:每天轮转一次日志;rotate 7
:保留最近7天的日志文件(可根据需求调整,如rotate 30
保留30天);compress
:压缩旧日志以节省空间;missingok
:若日志文件不存在,不报错;notifempty
:若日志为空,不进行轮转;create 0640 root adm
:创建新日志文件时设置权限和属主。/var/log/nohup.out {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
}
配置完成后,logrotate会自动执行轮转(通常通过cron
每日运行),保留最近7天的nohup.out
文件(如nohup.out.1.gz
、nohup.out.2.gz
等)。3. 手动脚本管理日志的保存时间
若不想使用logrotate,可通过Shell脚本定期切割并删除旧日志。例如:
/usr/local/bin/log_split.sh
):#!/bin/bash
LOG_DIR="/var/log"
LOG_FILE="$LOG_DIR/nohup.out"
CUT_LOG="$LOG_DIR/nohup_$(date +%Y%m%d).log"
# 切割日志
if [ -f "$LOG_FILE" ]; then
mv "$LOG_FILE" "$CUT_LOG"
echo "日志已切割为 $CUT_LOG"
fi
# 删除7天前的日志
find "$LOG_DIR" -name "nohup_*.log" -mtime +7 -exec rm {} \;
echo "7天前的日志已删除"
crontab -e
添加以下行,每天凌晨3点执行脚本:0 3 * * * /usr/local/bin/log_split.sh
此脚本会保留最近7天的日志文件(如nohup_20251009.log
),超过7天的自动删除。总结:Debian系统中nohup日志的保存时间取决于配置方式,默认无限制,但可通过logrotate或手动脚本实现定期清理,建议根据日志量大小设置合理的保留周期(如7-30天)。