# coding: utf-8

import schedule          # ----> schedule.every()
import time              # ----> time.sleep()
import random            # ----> random.randint()
import syslog            # ----> syslog.syslog()
import os                # ----> os.popen()


FIND_DIR = '/user/service/logs /user/db/pgsql/logs /log/db/logs /usr/service/logs/soldrived'  # log 파일 디렉토리 위치 설정
FIND_CONDITION = ' -atime +29 -a -type f -a -name *.log '                                     # 삭제할 log 파일 검색 조건
START_TIME = '5:00'                                                                           # log 파일 삭제 시각 설정


def job1():                                                                                   # job1()은
    x = random.randint(1,7000)                                                                # Class random()의 randint 기능으로 x의 정수 범위를 지정하고
#    print(x)                                                                                  
    time.sleep(x)                                                                             # 초 단위의 x의 시간 동안 다음 라인의 수행을 중지시킨다.
    cmd1 = "'find " + FIND_DIR + FIND_CONDITION + "| wc -l 2>&1'"                             # 
    work1 = os.popen(cmd1).readline()                                                         # Class os()의 popen 기능으로 cmd1을 수행시키고 readline() 모듈로 그 결과값을 읽어 드린다.
    syslog.syslog(str("Will be deleted log files: " + work1))                                 # Class syslog()의 syslog 기능으로 시스템log(/var/log/messages)에 work1의 결과를 기록한다.
    cmd2 = "'find " + FIND_DIR + FIND_CONDITION + "|xargs rm -rf 2>&1'"                       # 
    work2 = os.popen(cmd2)                                                                    # Class os()의 popen 기능으로 cmd2을 수행시킨다.


schedule.every(1).day.at(START_TIME).do(job1)                                                 # Class schedule()의 every 기능으로 START_TIME에 지정된 시각에 job1을 수행하고
while True:                                                                                   #
    schedule.run_pending()                                                                    #
    time.sleep(10)                                                                            # 매 10초 마다 반복적으로 스케줄러가 지정된 시각에 동작할 수 있도록 한다.
