一、目的
我们遇到需要整点自动运行的任务时,使用下面脚本设置自动检测整点运行的程序,当到达指定的时间时,运行指定的脚本。
二、方法
1.python 版本
代码如下(示例):
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 6 14:00:31 2021
@author: dujidan
"""
from subprocess import check_call
from time import sleep
from datetime import datetime, timedelta
while True:
hours_date = (datetime.now()).strftime("%Y%m%d%H")[-2:] # 获取 时
if hours_date == '08': # 早 8.00
cmd = 'python3 RUN.py'
check_call(cmd, shell=True)
sleep(3600) # 跳过 目标时间段
else:
# sleep 到整点
time_aim = str(datetime.now() + timedelta(hours=1))[:13]+':00:00' # 创建 目标时间
target_time = datetime.strptime(time_aim, '%Y-%m-%d %H:%M:%S') # 格式转换
delay = (target_time - datetime.now()).total_seconds() # 相减 获取 差值的秒数
sleep(delay)
2.shell 版本
代码如下(示例):
band="$( cd "$( dirname "$0" )" && pwd )"
idx=1
while [ $idx != 0 ]
do
clock=`date +"%H"`
if [[ "${clock}" == "10" ]]; then
echo $clock
##sh $band/RUN.sh
fi
if [[ "$clock" == "23" ]];then
sec=`date +%s | awk '{print 1200 - $1 % 1200 + 5;}'` # 加5s 跳过计算+-1的边界
sleep $sec
else
sec=`date +%s | awk '{print 3600 - $1 % 3600 + 5;}'`
echo $sec
sleep $sec
fi
done