我们无权在我们的环境中使用cron和at命令。我想每小时运行一个sh文件。
我正在考虑这段代码,但我不确定这是否是最优雅的方法。请指教。下面是伪代码。
我只是做一个无限循环然后循环遍历24值的数组来表示小时:
****
答案 0 :(得分:1)
以下是一个例子:
#!/bin/bash
interval=3600
while [[ ! -f /home/22/job_stop.txt ]] ; do
now=$(date +%s) # timestamp in seconds
sleep $((interval - now % interval))
# do something
done
简单的sleep 3600
会导致时间漂移,因为执行的命令需要时间。这计算直到下一个小时的顶部的秒数,并且睡眠时间长。 (如果命令需要一个多小时,它将跳过一次或多次迭代,但下一次迭代将在一小时内完成。)
请注意,这会检查自Unix纪元以来的整数小时。如果您将间隔更改为86400(一天),它将在UTC午夜执行。
答案 1 :(得分:0)
Python是你的朋友!
使用shebang系列,您可以轻松地从shell调用python程序:
#!/usr/bin/env python
import schedule
import time
import subprocess
import os
def cmd() :
# Call your command here
subprocess.call(["/folder/1/script.sh"])
schedule.every(1).hour.do(cmd)
while not os.path.exists("/home/22/job_stop.txt")
schedule.run_pending()
time.sleep(1)