如何在一分钟后启动shell脚本?
假设有两个bash文件a.sh和b.sh
我想在a.sh执行一分钟(或几秒)后执行b.sh.
我应该在a.sh中编码什么?
答案 0 :(得分:19)
简单。你想用'at'安排你的工作。和'约会'来计算你将来的时刻。
示例:
echo b.sh | at now + 1 minute
或:
echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%S"`
-v+60S
为当前时间增加60秒。您可以准确控制要添加的秒数。
但通常情况下,当人们希望一个程序在一分钟之后启动时,他们并非100%确定它不会花费多于或少于一分钟。而已。可以在b.sh
完成之前启动a.sh
。或者a.sh
可能比“计划”提前30秒完成,而b.sh本可以更快地开始。
我会推荐一个不同的型号。首先发布b.sh
的位置。
a.sh
在启动时创建临时文件。 execute是任务并在最后删除其临时文件。
b.sh
监视要创建的临时文件,然后删除。并开始其任务。
答案 1 :(得分:4)
制作a.sh的最后一行:
sleep 60 && b.sh
(如果b.sh不在PATH的目录中,请将其作为b.sh的完整路径。)
答案 2 :(得分:3)
你可以sleep
:
a.sh
sleep 60
b.sh
或者对于更复杂的情况,您可以使用at
命令:
echo b.sh | at now + 1 minute
有关详细信息,请参阅at
手册页。
答案 3 :(得分:1)
使用at
命令。
请参阅man at
了解如何使用它。
答案 4 :(得分:0)
您可以使用该命令将脚本暂停1分钟。
sleep 1m
然后当你想要调用第二个脚本
时bash a.sh
答案 5 :(得分:0)
如果要在第一个脚本的 start 之后的几秒钟内执行第二个脚本,可以在第一个脚本中执行此操作:
b.sh &
这是第二个:
sleep 10
# more commands
您可以将秒数作为参数从第一个传递到第二个。
不幸的是,at
的时间增量不会超过一分钟。
答案 6 :(得分:0)
安排两个脚本在cron中同时运行,并将所需的延迟放在b.sh中。