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()
热爱技术,享受生活,感谢推荐!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-10-28 Form组件
2019-10-28 中间件
2019-10-28 跨域
2019-10-28 ORM中的锁和事务
2019-10-28 cookie和session
2019-10-28 之Ajax