linux/ubuntu定时/达到为5GB【如果】清空日志脚本

需求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大小清空


注:图片为5G示例

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

#!/bin/bash

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

# 获取uwsgi.log文件大小(以KB为单位)
uwsgi_size=$(du -k "$uwsgi_log" | cut -f1)

# 获取app.log文件大小(以KB为单位)
app_size=$(du -k "$app_log" | cut -f1)

# 检查uwsgi.log文件大小是否小于等于阈值
if [ "$uwsgi_size" -le "$max_size" ]; then
    # 清空uwsgi.log文件
    truncate -s 0 "$uwsgi_log"

    # 记录清空文件的时间
    echo "uwsgi.log cleared on $(date)" >> "$uwsgi_log"
fi

# 检查app.log文件大小是否小于等于阈值
if [ "$app_size" -le "$max_size" ]; then
    # 清空app.log文件
    truncate -s 0 "$app_log"

    # 记录清空文件的时间
    echo "app.log cleared on $(date)" >> "$app_log"
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,就会清空文件。

demo其它案例

清空uwsgi.log文件当其大小超过10M时:

#!/bin/bash

# 设置uwsgi.log文件路径
log_file="/path/to/uwsgi.log"

# 设置阈值为10M
threshold=10485760  # 10M = 10 * 1024 * 1024 bytes

# 获取当前文件大小
file_size=$(wc -c < "$log_file")

# 检查文件大小是否超过阈值
if [ "$file_size" -gt "$threshold" ]; then
    # 备份日志文件
    mv "$log_file" "${log_file}.bak"
    
    # 创建新的空白日志文件
    touch "$log_file"
    
    echo "uwsgi.log has been cleared because it exceeded 10M."    
else
    echo "uwsgi.log is within the size limit. No action required."
fi

请替换脚本中的/path/to/uwsgi.log为实际的uwsgi日志文件路径。可以将脚本保存为.sh文件,并为其添加执行权限,然后将其设置为定时任务,以便定期检查和清空日志文件。

添加执行权限并设置为定时任务的步骤如下:

步骤一:添加执行权限

打开终端,并进入包含Shell脚本的目录。假设已经将脚本保存为clear_uwsgi_log.sh,执行以下命令:

chmod +x clear_uwsgi_log.sh

这会为脚本添加执行权限。

步骤二:设置定时任务(使用cron)

  1. 打开定时任务编辑器:
crontab -e
  1. 如果是第一次编辑定时任务,系统可能会要求选择编辑器。选择喜欢的编辑器。
  2. 在编辑器中添加以下行,用于每天定时执行清空uwsgi.log文件的脚本。请根据实际情况修改脚本路径和执行时间。
# 示例:每天凌晨2点执行清空uwsgi.log文件的脚本
0 2 * * * /path/to/clear_uwsgi_log.sh

这个例子中,0 2 * * * 表示每天凌晨2点执行脚本。可以根据需求调整执行时间。

  1. 保存并关闭编辑器。

注意事项:

  • 请确保脚本的路径和文件名正确,并根据实际情况进行调整。
  • 确保脚本中的uwsgi.log文件路径是正确的。
  • 定时任务的执行时间根据需求进行设置。
posted @ 2023-11-15 00:54  __username  阅读(75)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。