定在crontab 每天执行

crontab -e

* 2 * * * ~/autodelete.py

Python 代码如下

#!/usr/bin/env python
# encoding:utf-8 '''
''' __author__ = 'moryaden at qq.com' import sys
import argparse
import re
import os
import traceback
import logging.config
import datetime # install with `pip install elasticsearch`
# for es 0.9x, install elasticsearch-py 0.4.x
import elasticsearch def cfgLogging():
logpath = os.path.join("log") if 'win' not in sys.platform:
os.system("mkdir -p " + logpath)
else:
if not os.path.exists(logpath):
os.makedirs(logpath) LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'default': {'format': '[%(asctime)-25s] [%(relativeCreated)-15s] %(levelname)-10s pid:%(process)d %(message)s'},
# default': {
# 'format' : '%(asctime)s %(message)s',
# 'datefmt' : '%Y-%m-%d %H:%M:%S'
# }
},
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'default'
},
'file': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'default',
'filename' : os.path.join(logpath, 'runlog.log'),
'maxBytes': 50 * 1024 * 1024, # 10M
'backupCount': 20,
'encoding' : 'utf8',
}
},
'loggers' : {
'' : {
'level' : 'DEBUG',
'handlers' : ['console', 'file'],
'propagate' : True
}
}
}
logging.config.dictConfig(LOGGING) def parseCmdOptions():
parser = argparse.ArgumentParser()
parser.add_argument('-n', "--nday", help = "delete indices beyond which day, could specify -1, -2 and -n",
type = int, default = -7, choices = xrange(-10, 1)) cmdoptions = parser.parse_args() return cmdoptions def getDeadLineDate(day = -2):
dt_today = datetime.datetime.today()
time_delta = datetime.timedelta(day)
dead_line_day = dt_today + time_delta
return dead_line_day def run():
logger = logging.getLogger('main')
cmdoptions = parseCmdOptions() es_hosts = ['10.0.0.1', ]
es = elasticsearch.Elasticsearch(es_hosts)
dead_line_day = getDeadLineDate(cmdoptions.nday)
date_format = '%Y.%m.%d' d = es.indices.get_alias('logstash*')
logger.info("I see all names {}".format(d.keys())) for name in d:
m = re.search(r"^logstash.(.*)$", name)
if m:
s_date = m.group(1)
logdate = datetime.datetime.strptime(s_date, date_format)
if dead_line_day > logdate:
ack = es.indices.delete(name)
logger.info("deleting %s, ack={}".format(ack), name)
else:
logger.info("keeping %s", name) def main():
try:
cfgLogging()
logger = logging.getLogger("main")
run()
except SystemExit:
pass
except:
logger.info('----->>>>>>>>>> {}'.format(traceback.format_exc())) if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass

最新文章

  1. SE(homework3)_敏捷模型
  2. 关于Spring中的<context:annotation-config/>配置
  3. 在 Win10 命令行使用 Consolas + 微软雅黑
  4. AndEngine
  5. 30天,O2O速成攻略【8.30南京站】
  6. phpcms 02
  7. [超简洁]EasyQ框架-应对WEB高并发业务(秒杀、抽奖)等业务
  8. 利用CentOS系统IPtables防火墙添加网站IP白名单
  9. Spring AOP入门——概念和注意事项
  10. BotVS开发基础—2.11 API绘制图表
  11. mysql解决select * from 表名 (where + 约束条件为空)
  12. UVA -580 组合数学
  13. SQL注入之Sqli-labs系列第十二关
  14. input 原生上传文件(type = file)
  15. 第三方登录:微信扫码登录(OAuth2.0)
  16. mysql--------四种索引类型
  17. SPSS--回归-多元线性回归模型案例解析
  18. 使用Spring Loader或者Jrebel实现java 热部署
  19. 前端构建之--gulp
  20. AtCoder Regular Contest 088 E - Papple Sort(树状数组+结论)

热门文章

  1. 32个触发事件XSS语句的总结
  2. 【经典算法】——KMP,深入讲解next数组的求解
  3. linux kernel 如何处理大小端
  4. SharePoint 2016 Beta 2 安装体验
  5. 2014-04-09 互联网Web安全职位面试题目汇总
  6. H.264简介
  7. POJ 1236 SCC+缩点
  8. 2015百度之星1002 查找有序序列(RMQ+主席树模板水过)
  9. 避免每次输入bundler Exec命令
  10. WebDriver定位元素方法