我们如何使用python获得在crontab中运行的脚本列表--比如4:00PM到8:00PM --我得到的是用户在crontab中运行的所有作业的列表,但在那个特定的时间无法得到。
尝试过这样做:
得到所有脚本的列表。
from crontab import CronTab
import datetime
import croniter
cron = CronTab("user")
for j in cron:
print j试图在那个特定的时间之间:
from crontab import CronTab
import datetime
import croniter
cron = CronTab("pfmuser")
for j in cron:
hour = int(j.split()[1])
minutes = int(j.split()[0])
if hour >= 16 and hour <= 20:
print('fond a job running between 16 and 20')获得错误:AttributeError:'CronItem‘对象没有属性’拆分‘
错误已完成,但
***but now i have:
1) 10 0 * * 5
2) 0 3 1 * *
3) 0 0 * * *
4) 0 1 * * *
5) 0 10 * * *
now if have some problem and the cron scripts didnt run then if i am running for 0-10th hour then i need only
3) 0 0 * * *
4) 0 1 * * *
5) 0 10 * * *
these scripts only should run
1) 10 0 * * 5 (only friday)
2) 0 3 1 * * (only 1st month)
these should not run
how to keep this may be can i use datetime and get that particular details later compare with the cron info.How do i go*** 编辑脚本,并提出以下建议:
from crontab import CronTab
import datetime
from croniter import croniter as ci
cron = CronTab("pfmuser")
for cronitem in cron:
cronitemstr = str(cronitem)
hour = cronitemstr.split()[1]
minutes = cronitemstr.split()[0]
minutesint = None
hourint = None
try:
hourint = int(hour)
minutesint = int(minutes)
except ValueError as e:
print e.message
if hourint >= 16 and hourint <= 20:
cronitemstr = cronitemstr[:cronitemstr.index(cronitemstr.split()[5])]
min=cronitemstr.split()[0]
dom=cronitemstr.split()[2]
mon=cronitemstr.split()[3]
dow=cronitemstr.split()[4]
date_time=datetime.datetime.now()
try:
if(min=='*' and dom=='*' and mon=='*' and dow=='*' ):
print cronitemstr
print cronitem
else:
print "none"
except Exception as e:
print "e"在if子句中需要包括更多的条件,就像我们需要包含更多的条件一样
发布于 2018-10-03 12:00:50
cronitem对象不是字符串,因此没有属性拆分。在你尝试分裂之前,你可以把它投到一个str上。例如:
from crontab import CronTab
import datetime
from croniter import croniter as ci
cron = CronTab("pfmuser")
for cronitem in cron:
cronitemstr = str(cronitem)
hour = cronitemstr.split()[1]
minutes = cronitemstr.split()[0]
minutesint = None
hourint = None
try:
hourint = int(hour)
minutesint = int(minutes)
except ValueError as e:
print e.message
print hourint
print minutesint
if hourint >= 16 and minutesint <= 20:
print('found a job running between 16 and 20')
cronitemstr = cronitemstr[:cronitemstr.index(cronitemstr.split()[5])]
iter = ci(cronitemstr)
next_run = iter.get_next()
last_run = iter.get_prev()
next_run_datetime = datetime.datetime.fromtimestamp(next_run)
last_run_datetime= datetime.datetime.fromtimestamp(last_run)
print 'the next run is at {}'.format(next_run_datetime)
print 'the last run was at {}'.format(last_run_datetime)https://stackoverflow.com/questions/52624875
复制相似问题