Command-Line

通過指定確切的秒來調度命令/腳本

  • April 29, 2021

我正在使用 bash 並想知道如何在稍後的指定時間以一秒的精度執行命令/腳本?

我閱讀了at-command 的手冊頁,但據我所知,它只能指定分鐘(而不是秒)。現在我首先使用at然後sleep讓它執行正確的第二個。為了展示,如果我想在 22.21.05 執行 my_script.sh,我會這樣做:

echo "sleep 5; my_script.sh" | at 22.21

但是如果有一個內置的命令會更好。像at 22.21.05.

我不相信這是可能的。 cron只是細化到分鐘,at實用程序掛鉤到它來完成它的工作。我認為你有正確的解決方案——在執行前睡x秒。

你可以把你的技術變成一個函式:

atplus () { local sec=${1##*.} time=${1%.*}; shift; echo "sleep $sec; $@" | at $time; }

試試看:

atplus 22.21.05 my_script.sh

但是,您應該知道,不能保證精度。

引用自:https://unix.stackexchange.com/questions/1213