CentOS中nohup日志的默认保存时间及管理方式
在CentOS系统中,使用nohup命令运行程序时,默认情况下日志会输出到当前工作目录下的nohup.out文件(若未指定其他路径)。默认情况下,nohup.out文件会一直存在,其保存时间不受nohup命令本身限制,主要受以下因素影响:
若磁盘空间充足,nohup.out会持续累积日志;当磁盘空间耗尽时,系统可能因无法写入而报错,甚至自动删除或覆盖旧日志(取决于文件系统和进程权限)。
CentOS自带的logrotate工具可自动管理日志文件的轮转、压缩和删除,是控制nohup日志保存时间的核心方法。通过配置logrotate,可实现以下功能:
daily)、周(weekly)或月(monthly)分割日志;rotate 7表示保留最近7天的日志);gzip等算法压缩旧日志以节省空间;size 100M)或非空时进行轮转。示例配置(针对nohup.out):
/path/to/your/nohup.out {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志
missingok # 文件不存在时不报错
notifempty # 文件为空时不轮转
create 640 root root # 创建新日志文件的权限和所有者
}
配置完成后,logrotate会按计划自动执行(默认每天运行一次),无需手动干预。
若未使用logrotate,可通过以下脚本定期清理旧日志:
#!/bin/bash
LOG_DIR="/path/to/your/logs"
MAX_DAYS=7
find "$LOG_DIR" -name "nohup.out*" -type f -mtime +$MAX_DAYS -exec rm {} \;
该脚本会删除LOG_DIR目录下所有以nohup.out开头、修改时间超过7天的文件。
chmod 640 nohup.out),避免敏感信息泄露。