我正在寻找一些可能在特定时间启动另一个命令的 Linux 命令。
我知道该at
命令,但它只提供分钟精度,而我需要秒精度。at 命令中是否有我不知道的选项?或者我应该使用其他命令吗?
任何方向都是有用的。
答案1
答案2
您可以在最近的一分钟安排您的工作,然后使用alarm
获得秒级精度。以下是 Python 中的示例:
from signal import signal, setitimer, ITIMER_REAL, SIGALRM, alarm
from datetime import datetime, time
from sys import argv, exit
from time import sleep
at = datetime.combine(datetime.now(), time.fromisoformat(argv[1]))
class Done(Exception):
pass
def _handler(signum, frame):
print("The time is", datetime.now())
raise Done()
setitimer(ITIMER_REAL, (at - datetime.now()).total_seconds())
signal(SIGALRM, _handler)
try:
while True:
sleep(1)
except Done:
pass
跑步:
$ python at-second.py 13:36:28
The time is 2022-07-06 13:36:28.000238
此方法的局限性:
任何时候都只能安排一个闹钟
因此,如果您需要在一分钟内执行多个事件,则您只需要在第一个事件完成后才安排第二个事件。