温馨提示×

nohup日志在centos中的压缩方法

小樊
38
2025-11-29 22:57:28
栏目: 智能运维

在CentOS系统中,使用nohup命令运行程序时,通常会在当前目录下生成一个名为nohup.out的日志文件。为了节省磁盘空间,可以定期压缩这个日志文件。以下是几种常见的方法:

方法一:使用gzip命令手动压缩

  1. 打开终端。
  2. 切换到包含nohup.out文件的目录。
  3. 运行以下命令压缩日志文件:
    gzip nohup.out
    
    这将生成一个名为nohup.out.gz的压缩文件,并删除原始的nohup.out文件。

方法二:使用cron定时任务自动压缩

  1. 打开终端。
  2. 编辑crontab文件:
    crontab -e
    
  3. 添加一行定时任务,例如每天凌晨2点压缩日志文件:
    0 2 * * * gzip /path/to/nohup.out
    
    /path/to/nohup.out替换为实际的日志文件路径。
  4. 保存并退出编辑器。

方法三:使用logrotate工具自动管理日志文件

logrotate是一个系统工具,用于管理日志文件的轮转和压缩。

  1. 确保logrotate已安装:

    sudo yum install logrotate
    
  2. 创建或编辑logrotate配置文件,例如/etc/logrotate.d/myapp

    sudo nano /etc/logrotate.d/myapp
    
  3. 添加以下内容:

    /path/to/nohup.out {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root root
    }
    

    解释:

    • daily: 每天轮转一次。
    • rotate 7: 保留7个旧的日志文件。
    • compress: 压缩旧的日志文件。
    • missingok: 如果日志文件不存在,不会报错。
    • notifempty: 如果日志文件为空,不进行轮转。
    • create 640 root root: 创建新的日志文件,权限为640,属主和属组为root。
  4. 保存并退出编辑器。

方法四:使用systemd服务管理日志文件

如果你使用systemd管理服务,可以创建一个自定义的systemd服务来管理日志文件的压缩。

  1. 创建一个新的systemd服务文件,例如/etc/systemd/system/myapp-logrotate.service
    sudo nano /etc/systemd/system/myapp-logrotate.service
    
  2. 添加以下内容:
    [Unit]
    Description=Rotate and compress nohup.log for MyApp
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/logrotate /etc/logrotate.d/myapp
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启用并启动服务:
    sudo systemctl enable myapp-logrotate.service
    sudo systemctl start myapp-logrotate.service
    

通过以上方法,你可以有效地管理和压缩nohup日志文件,节省磁盘空间。

0