python脚本清除linux cron中过期的定时计划

    由于服务器需要定时的去执行一些任务,精确到月、日、时、分,这样cron文件中的条目就比较多了,单个的去删除比较麻烦,写了个脚本,去维护cron文件中的计划任务,删除已经过期的,保留需要执行的。

    以apache用户的cron文件为例,脚本内容如下:


    #!/usr/bin/env python
    # -- coding: utf-8 --

    import time

    def delcront():
    f = '/var/spool/cron/apache'
    read = open(f,'r')
    cront = read.readlines()#读取apache用户cron文件的内容
    read = open(f,'w')
    read.write("")#清除当前文件的内容
    for line in cront:
    if '#' not in line:
    a = ' '.join(line.strip().split()[0:4])#截取cron中的月、日、时、分字段
    aa = str(time.localtime()[0]) + ':' + ':'.join(a.split()[::-1]) + ':00'#格式化截取到的时间字段为%Y:%m:%d:%H:%M:%S格式
    cronttime = time.mktime(time.strptime(aa, '%Y:%m:%d:%H:%M:%S'))#标准时间格式转化为时间戳
    print a,aa,cronttime
    now = time.time()#当前的时间的时间戳
    if now < cronttime:
    read.write(line)#大于当前时间的任务回写到cron文件中,保留
    else:
    read.write(line)#注释之类的保留到文件中
    read.close

    if __name
    =="__main
    ":
    del_cront()

    执行脚本前文件/var/spool/cron/apache中的内容如下:

    python脚本清除linux cron中过期的定时计划 - 图1

    执行脚本截图如下:

    python脚本清除linux cron中过期的定时计划 - 图2

    执行完脚本文件/var/spool/cron/apache中的内容如下:

    python脚本清除linux cron中过期的定时计划 - 图3

    当前系统时间为:

    python脚本清除linux cron中过期的定时计划 - 图4