Bash 脚本需要每秒运行一次

Bash 脚本需要每秒运行一次

我有一些清理命令可以为我的数据缓存方案运行。我认为bash脚本是检查是否需要运行完整清理作业的简单方法。但缓存对时间非常敏感,因此检查脚本需要每秒运行一次。最好的方法是什么?

Crontab 只需几分钟,这对于大多数应用程序来说都是有意义的。

我可以安装bash脚本作为后台服务吗?

但第二,我可以用 & 命令启动它,并让它永远循环一秒钟的睡眠吗?

答案1

最简单的方法是 watch 命令。您将秒数传递给 -n 选项:

 watch -n1 'rand'

答案2

使用sleep。尝试这个while true ; do ./your-script & ; sleep 1; done

答案3

使用以下 shell 脚本(我将其称为repeat-cleanup.sh),您可以以 1 秒的延迟重复运行代码每次执行之间

while true; do
  # Your cleanup code here, or execute a script containing said code
  sleep 1
done

使用执行它双分叉:

( ./repeat-cleanup.sh & )

或者,您可以完全跳过脚本并以一行开头:

( while true; do ./cleanup.sh; sleep 1; done & )

解释

这两种方法都每秒运行脚本。相反,他们在每次执行脚本之间等待一秒钟。只要脚本花费的时间不超过几百毫秒,这就不成问题。

双分叉会放弃进程,即使您关闭 shell,它仍会继续运行。如果您只是使用 让进程进入后台,则此方法无效&

我已经在 Alpine Linux 上使用一个简单的脚本测试了这两种方法,并且它们的工作效果一致。

答案4

我正在使用类似的东西:

do-the-job;
sleep 1; // wait one second till next run
./script-name &; // run same script again on background

但不知道是否正确:)

相关内容