linux/ubuntu定时/达到为5GB【如果】清空日志脚本
需求1:定时清空uwsgi.log和app.log
结构demo
方法
针对清空uwsgi.log
和app.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.log
和app.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)
- 打开定时任务编辑器:
crontab -e
- 如果是第一次编辑定时任务,系统可能会要求选择编辑器。选择喜欢的编辑器。
- 在编辑器中添加以下行,用于每天定时执行清空uwsgi.log文件的脚本。请根据实际情况修改脚本路径和执行时间。
# 示例:每天凌晨2点执行清空uwsgi.log文件的脚本
0 2 * * * /path/to/clear_uwsgi_log.sh
这个例子中,0 2 * * *
表示每天凌晨2点执行脚本。可以根据需求调整执行时间。
- 保存并关闭编辑器。
注意事项:
- 请确保脚本的路径和文件名正确,并根据实际情况进行调整。
- 确保脚本中的uwsgi.log文件路径是正确的。
- 定时任务的执行时间根据需求进行设置。
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17832979.html