Linux 命令精度达秒

Linux 命令精度达秒

我正在寻找一些可能在特定时间启动另一个命令的 Linux 命令。

我知道该at命令,但它只提供分钟精度,而我需要秒精度。at 命令中是否有我不知道的选项?或者我应该使用其他命令吗?

任何方向都是有用的。

答案1

用于cron运行调用的脚本睡觉命令的精度达到亚分钟级吗?那么

sleep 10 ; foo.sh 

应该foo.sh在调用命令后 10 秒运行。

答案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

此方法的局限性:

任何时候都只能安排一个闹钟

因此,如果您需要在一分钟内执行多个事件,则您只需要在第一个事件完成后才安排第二个事件。

相关内容