有时候咱们会须要定时执行一个脚本,那么能够用cronjob来实现,比方这样:
10 04 * * * /usr/local/bin/somework.sh
有时候,只心愿这个脚本在工作日执行,比方这样:
10 04 * * 1-5 /usr/local/bin/somework.sh
然而工作日有时候又不是简略的周一到周五,比方赶上个小长假什么的,有时候周六要下班,有时候周一又不下班,这时候这样的设置就容易乱,那咱们怎么设置这个cronjob能力让他预知咱们的放假排班打算,并做到丝毫不乱呢?
只用cron是不行的,咱们须要在脚本里调取一个凋谢接口获知放假安顿,而后就能够按计划执行了。
这个凋谢接口在这里: https://github.com/NateScarle…
咱们简略写一个脚本:
#!/usr/local/bin/python """每天定时执行脚本""" import datetime import requests def will_work(date): """查看该天是否须要工作""" holiday_data = requests.get( url='https://natescarlet.coding.net/p/github/d/holiday-cn/git/raw/master/2022.json' ).json() # 放入公司规定的非凡考勤日 holiday_data['days'].append({ 'date': '2022-06-21', 'isOffDay': False }) # 查看该日期是否在列表中 days_in_list = [day for day in holiday_data['days'] if day['date'] == datetime.datetime.strftime(date, '%Y-%m-%d')] if days_in_list: # 是否在节假日倒休表里,如果在倒休表里,按倒休表作息 return not (days_in_list[0]["isOffDay"]) else: # 依照周一至周五作息 return True if date.weekday() < 5 else False def main(): """主函数""" if will_work(datetime.datetime(2022, 6, 21, 0, 0, 0, 0)): print("明天要下班") else: print("明天不下班") if __name__ == '__main__': main()
赋予它执行权限:
chmod +x somework.py
而后定一下cronjob:
10 04 * * * /usr/local/bin/somework.py
就能够每个工作日执行了。