Linux服务器网站日志文件越来越大,怎么自动定期清理?不会命令行写脚本,写几行python代码也可以轻松搞定。

轻松搞定日志清理,Python小白也能上手!

嘿,小伙伴们!今天咱们来聊聊一个超级实用的小技巧,用Python来清理那些让人头疼的服务器日志文件。如果你是Python新手,别担心,这篇文章会让你轻松上手,还能学到不少有趣的拓展玩法呢!

一、问题来了:日志文件“爆炸”怎么办?

如果你做过网站开发或者运行过一些服务器程序,就会发现日志文件就像“数字垃圾”一样,越堆越多。这些.log文件记录了程序运行的各种信息,但如果它们不断膨胀,就会占用大量宝贵的磁盘空间,甚至可能让服务器崩溃!那怎么办呢?别急,Python来帮忙!

二、代码解析:Python帮你“瘦身”

先来看看这个神奇的代码片段:

log_folder = '/home/wwwlogs/'
size_limit = 50 * 1024 * 1024  # 50MB

这里定义了两个关键变量:log_folder是日志文件存放的目录,size_limit是文件大小的上限(这里是50MB)。简单来说,就是“别让日志文件超过50MB哦”。

接下来是核心部分:

for filename in os.listdir(log_folder):
    if filename.endswith('.log'):
        fullpath = os.path.join(log_folder, filename)
        if os.path.getsize(fullpath) > size_limit:
            print(f'{filename} exceeds size limit, deleting it')
            os.remove(fullpath)

这段代码是清理日志的“小能手”。它会逐个检查日志文件夹里的文件,如果文件名以.log结尾(说明是日志文件),并且文件大小超过我们设定的50MB,就会把它删掉。是不是很聪明?就像一个会自动清理垃圾的机器人。

最后,为了让这个清理过程持续进行,我们用了一个while True循环,每隔5分钟(time.sleep(300))检查一次日志文件夹。这样,你的服务器就能一直保持清爽啦!

三、应用场景:这个代码能干啥?

这个代码非常适合用在服务器上,尤其是那些运行网站、服务器程序或者各种后台服务的地方。日志文件会不断生成,而这个脚本就像一个“清洁工”,帮你定期清理那些“胖乎乎”的日志文件,节省磁盘空间,避免服务器被日志撑爆。

四、拓展玩法:Python的“魔法”不止于此!

场景一:按日期清理日志

有时候,我们不仅想按大小清理日志,还想保留最近几天的日志文件。比如,只保留最近7天的日志,其他的都删掉。这该怎么办呢?看下面的代码:

import os
import time
from datetime import datetime, timedelta

log_folder = '/home/wwwlogs/'
days_to_keep = 7  # 保留最近7天的日志

while True:
    for filename in os.listdir(log_folder):
        if filename.endswith('.log'):
            fullpath = os.path.join(log_folder, filename)
            file_time = os.path.getctime(fullpath)  # 获取文件创建时间
            file_date = datetime.fromtimestamp(file_time)  # 转换为日期格式
            if file_date < datetime.now() - timedelta(days=days_to_keep):
                print(f'{filename} is too old, deleting it')
                os.remove(fullpath)
    time.sleep(300)

这里我们用os.path.getctime获取文件的创建时间,然后判断它是否比“当前时间减去7天”更早。如果是,就把它删掉。这样,你的日志文件夹就永远只保留最近7天的日志啦!

场景二:备份日志文件

有时候,我们不想直接删除日志文件,而是想把它们备份到另一个地方。比如,把超过50MB的日志文件移动到一个“备份文件夹”里。看下面的代码:

import os
import time
import shutil

log_folder = '/home/wwwlogs/'
backup_folder = '/home/wwwlogs_backup/'
size_limit = 50 * 1024 * 1024  # 50MB

while True:
    for filename in os.listdir(log_folder):
        if filename.endswith('.log'):
            fullpath = os.path.join(log_folder, filename)
            if os.path.getsize(fullpath) > size_limit:
                print(f'{filename} exceeds size limit, moving it to backup')
                shutil.move(fullpath, os.path.join(backup_folder, filename))
    time.sleep(300)

这里我们用shutil.move把文件从日志文件夹移动到备份文件夹。这样,既清理了原文件夹,又保留了日志文件,一举两得!

五、总结:Python的“小魔法”,让生活更轻松!

今天咱们学会了用Python清理日志文件,还拓展了两个更实用的场景。是不是觉得Python很厉害?其实,Python的“魔法”还有很多,只要我们用心去探索,就能用它解决各种问题。如果你是Python小白,希望这篇文章能让你迈出第一步;如果你已经是大神,也欢迎分享更多好玩的Python技巧哦!

完整代码

# -*- coding: utf-8 -*-
# @Time    : 2023/11/7 14:44
# @Author  : Kyln.Wu
# @Email   : kylnwu@qq.com
# @File    : 文件大小监控.py
# @Software: PyCharm
import os
import time

log_folder = '/home/wwwlogs/'
size_limit = 50 * 1024 * 1024  # 50MB

while True:
    for filename in os.listdir(log_folder):
        if filename.endswith('.log'):
            fullpath = os.path.join(log_folder, filename)
            if os.path.getsize(fullpath) > size_limit:
                print(f'{filename} exceeds size limit, deleting it')
                os.remove(fullpath)
    time.sleep(300)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值