linux/ubuntu定时清空日志

发布时间 2023-11-15 01:00:28作者: __username

需求1:定时清空uwsgi.log和app.log

结构demo

方法

针对清空uwsgi.logapp.log日志文件的Shell脚本,并使用cron作业进行定时清理的例子。

首先,创建一个脚本文件,比如 clear_logs.sh

#!/bin/bash

## 设置日志文件路径
uwsgi_log="/home/Fire9/code/weibo/uwsgi.log"
app_log="/home/Fire9/code/weibo/app.log"

## 清空日志文件
truncate -s 0 "$uwsgi_log"
truncate -s 0 "$app_log"

## 记录清空日志的时间
echo "Logs cleared on $(date)" >> "$uwsgi_log"
echo "Logs cleared on $(date)" >> "$app_log"

请确保替换/path/to/your/uwsgi.log/path/to/your/app.log为你实际的uwsgi和应用程序日志文件路径。

接下来,为脚本添加执行权限:

chmod +x clear_logs.sh

然后,打开cron表编辑器:

crontab -e

添加一行以每天的特定时间清空日志文件,比如每天的午夜(00:00):

0 0 * * * /path/to/your/clear_logs.sh

请确保替换/path/to/your/clear_logs.sh为你脚本的实际路径。

保存并关闭文件。现在,每天脚本都会运行,并清空指定的uwsgi.logapp.log日志文件。可以根据需要调整cron表达式。

需求2,当文件到达500GB大小清空

文件达到500GB时清空文件,定期检查文件大小,并在满足条件时进行清空。下面是一个简单的Shell脚本demo,用于检查文件大小并在达到500GB时清空文件:

#!/bin/bash

# 设置日志文件路径
target_file="/path/to/your/target_file.log"
max_size=500000  # 文件大小的阈值,单位为KB

# 获取文件大小(以KB为单位)
file_size=$(du -k "$target_file" | cut -f1)

# 检查文件大小是否超过阈值
if [ "$file_size" -ge "$max_size" ]; then
    # 清空文件
    truncate -s 0 "$target_file"

    # 记录清空文件的时间
    echo "File cleared on $(date)" >> "$target_file"
fi

请确保替换/path/to/your/target_file.log为你实际的目标文件路径,并根据需要调整max_size的值。这个值是以KB为单位的文件大小。

然后,你可以将这个脚本添加到cron作业中,以每天的特定时间检查文件大小。打开cron表编辑器:

crontab -e

添加一行类似于以下的条目,以每天的午夜(00:00)检查文件大小:

0 0 * * * /path/to/your/check_and_clear_script.sh

请确保替换/path/to/your/check_and_clear_script.sh为你脚本的实际路径。

保存并关闭文件。现在,每天脚本都会运行,并检查目标文件大小。如果文件大小达到500GB,就会清空文件。