nginx日志切割

# -*- coding: utf-8 -*-

import os
import shutil
from datetime import datetime, timedelta

yesterday = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
year = yesterday.split("-")[0]
month = yesterday.split("-")[1]
day = yesterday.split("-")[2]
# 日志路径
dirpath = '/nginx/logs'
y_m_path = dirpath + "/" + year + "/" + month

# 获取目录下的所有文件和目录
file_all = os.listdir(dirpath)
file_list = []


def bak_path():
    """
    判断文件是否存在不存在则创建
    :return:
    """
    if not os.path.exists(y_m_path):
        os.makedirs(y_m_path)


def file_status():
    """
    判断是否是文件,如果是文件且不为空,则拼接好路径并追加到列表中
    :return:
    """
    for i in file_all:
        file_path = os.path.join(dirpath, i)
        # if os.path.isfile(file_path):
        if ".log" in i:
            if os.path.getsize(file_path):
                file_list.append(file_path)


def mv_file():
    """
    移动日志到备份目录
    :return:
    """
    for i in file_list:
        file_name = os.path.split(i)[1].split('.')[0]
        shutil.move(i, y_m_path + "/" + file_name + "_" + "%s%s%s.log" % (year, month, day))


def nginx_pid():
    os.system('kill -USR1 `cat /var/run/nginx.pid`')


if __name__ == '__main__':
    bak_path()
    file_status()
    mv_file()
    nginx_pid()

posted @ 2021-10-28 14:43  追梦nan  阅读(42)  评论(0)    收藏  举报