linux对nohup日志进行定时拆分并且删除教程

IDC服务

linux对nohup日志进行定时拆分并且删除教程

2025-01-09 00:10


在Linux环境下,管理和维护日志文件是确保系统稳定运行的重要任务之一。对于使用 nohup命令运行的长期进程,日志文件(通常为 nohup.log)可能会不断增长,导致磁盘空间不足或日志查找困难。为了有效地定时拆分和删除日志文件,可以按照以下步骤进行操作:

                                            




Linux环境下,管理和维护日志文件是确保系统稳定运行的重要任务之一。对于使用 nohup命令运行的长期进程,日志文件(通常为 nohup.log)可能会不断增长,导致磁盘空间不足或日志查找困难。为了有效地定时拆分删除日志文件,可以按照以下步骤进行操作:


1. 创建日志拆分脚本

首先,需要编写一个Shell脚本,用于拆分当前的日志文件并删除过期的日志文件。以下是一个示例脚本 log_split.sh

#!/bin/bash

# 设置要拆分的日志文件路径和名称
log_file="/path/to/nohup.log"

# 设置拆分后的日志文件路径和名称,使用日期作为标识
split_log_file="/path/to/nohup_$(date +%Y%m%d).log"

# 检查日志文件是否存在
if [ -f "$log_file" ]; then
    # 拆分日志文件
    mv "$log_file" "$split_log_file"
    echo "日志文件已拆分为 $split_log_file" >> /var/log/log_split.log
else
    echo "日志文件 $log_file 不存在。" >> /var/log/log_split.log
fi

# 删除旧的日志文件,保留最近7天内的日志文件
find /path/to -name 'nohup_*.log' -mtime +7 -exec rm {} \;
echo "超过7天的日志文件已删除。" >> /var/log/log_split.log

脚本详解

  1. 脚本头部

    #!/bin/bash
    
    • 指定脚本使用 bash解释器执行。
  2. 设置日志文件路径

    log_file="/path/to/nohup.log"
    split_log_file="/path/to/nohup_$(date +%Y%m%d).log"
    
    • log_file:当前的 nohup.log文件路径。
    • split_log_file:拆分后的日志文件名,包含当前日期(格式为 YYYYMMDD),例如 nohup_20250106.log
  3. 检查日志文件是否存在

    if [ -f "$log_file" ]; then
        mv "$log_file" "$split_log_file"
        echo "日志文件已拆分为 $split_log_file" >> /var/log/log_split.log
    else
        echo "日志文件 $log_file 不存在。" >> /var/log/log_split.log
    fi
    
    • 如果 nohup.log存在,则将其重命名为包含日期的文件名,并记录操作日志。
    • 如果文件不存在,则记录相应的提示信息。
  4. 删除旧日志文件

    find /path/to -name 'nohup_*.log' -mtime +7 -exec rm {} \;
    echo "超过7天的日志文件已删除。" >> /var/log/log_split.log
    
    • 使用 find命令查找 /path/to目录下所有名称匹配 nohup_*.log且修改时间超过7天的文件,并执行删除操作。
    • 删除操作后记录日志,便于后续审查。

2. 设置定时任务

为了自动化执行日志拆分和删除,可以使用cron定时任务。以下是设置步骤:

  1. 打开crontab编辑器

    crontab -e
    
    • 该命令会打开当前用户的crontab文件,允许编辑定时任务。
  2. 添加定时任务: 在编辑器中添加以下行,以每天凌晨3点执行日志拆分脚本:

    0 3 * * * /bin/bash /path/to/log_split.sh
    
    • 字段解释
      • 0:分钟(0分)
      • 3:小时(凌晨3点)
      • *:日期(每天)
      • *:月份(每月)
      • *:星期几(每周)
    • 该任务每天凌晨3点执行一次 log_split.sh脚本。
  3. 保存并退出

    • 根据编辑器不同,通常按 Ctrl + X,然后按 Y确认保存,最后按 Enter退出。

3. 设置脚本权限

确保 log_split.sh脚本具有执行权限,以便cron能够正确运行。

chmod +x /path/to/log_split.sh
  • chmod +x:为脚本添加执行权限。
  • /path/to/log_split.sh:脚本的完整路径。

4. 工作流程概览

以下是日志拆分和删除的工作流程图示:

+--------------------+
| 定时任务触发 (每天3点) |
+---------+----------+
          |
          v
+--------------------+
| 执行 log_split.sh  |
+---------+----------+
          |
          v
+--------------------+       +--------------------+
| 检查 nohup.log     |-----> | 重命名为 nohup_YYYYMMDD.log |
+---------+----------+       +------                                            

標簽:
  • linux
  • nohup
  • 日志