我有一些清理命令可以为我的数据缓存方案运行。我认为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
但不知道是否正确:)