只在工作日执行的脚本
作者:张京
来源:SegmentFault 思否社区
有时候我们会需要定时执行一个脚本,那么可以用cronjob来完成,比如这样:
10 04 * * * /usr/local/bin/somework.sh
有时候,只希望这个脚本在工作日执行,比如这样:
10 04 * * 1-5 /usr/local/bin/somework.sh
但是工作日有时候又不是简单的周一到周五,比如赶上个小长假什么的,有时候周六要上班,有时候周一又不上班,这时候这样的设置就容易乱,那我们怎么设置这个cronjob才能让他预知我们的放假排班计划,并做到丝毫不乱呢?
只用cron是不行的,我们需要在脚本里调取一个开放接口获知放假安排,然后就可以按计划执行了。
这个开放接口在这里:
https://github.com/NateScarlet/holiday-cn
我们简单写一个脚本:
#!/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
就可以每个工作日执行了。
点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流,扫描下方”二维码“或在“公众号后台“回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~ - END -
关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 国产编程语言MoonBit正式被Github收录!两年核心用户数突破3万
- 澳元兑换人民币汇率2023年10月21日
- 本周大新闻|John Carmack从Meta离职,OPPO发布双目AR一体机仅38g
- 不是Pro就是Ultra,苹果再次展现刀法
- 亏损、交付量少、锁电被投诉,威马汽车上市求生?
- 冰峰汽水,紧急撤回IPO
- 工业互联网系列访谈 | 华峰创享费海平:开发更多应用场景,是标识解析体系进一步完善的必经之路
- 音频丨12月2日科技新闻晚报
- 抗衡 VS Code?JetBrains 官宣:“下一代 IDE”轻量编辑器 Fleet正式发布!
- 未来海战新变化引领下的反舰导弹发展新趋势
- 【C114周报】中国移动与中国广电启动700MHz 5G共建共享;余承东将兼任华为云与计算BG总裁;爱立信2020净利增长超8倍
- 我为“十四五”建言丨中国软件评测中心:夯实国家质量基础设施 服务工业质量品牌建设
赞助链接