一:背景
国产信创系统无法通过crontab调用起robot的gui界面,需要通过python来定时调用
二:代码
# coding=utf-8
from apscheduler.schedulers.background import BackgroundScheduler
import subprocess
import time
from datetime import datetime,timedelta
def run_shell_script():
# 替换为你的shell脚本路径
script_path = "/usr/local/liuxiaokang/start.sh"
subprocess.run(script_path, shell=True, check=True)
# 创建后台调度器
scheduler = BackgroundScheduler()
# 计算开始时间
now = datetime.now()
start_time = now.replace(hour=6, minute=50, second=0, microsecond=0)
# 如果现在已经是下午5点40分或以后,那么设定到明天的这个时间
if now > start_time:
start_time += timedelta(days=1)
# 格式化开始时间为字符串
start_date_str = start_time.strftime('%Y-%m-%d %H:%M:%S')
# 添加一个每天五点执行的任务
# 注意:这里使用'5:00'可能不适用于所有版本的APScheduler,需要确认格式
scheduler.add_job(run_shell_script, 'interval', hours=24, start_date=start_date_str)
# 开始调度器
scheduler.start()
try:
# 主程序保持运行,防止调度器退出
while True:
time.sleep(2)
except (KeyboardInterrupt, SystemExit):
# 如果程序被中断,则关闭调度器
scheduler.shutdown()
注意: nohup python **.py & (后台执行这个定时脚本)
三:扩展
Jenkins也能定时