如何在一分钟后在linux中启动shell脚本?

时间:2012-05-08 10:47:15

标签: bash

如何在一分钟后启动shell脚本?

假设有两个bash文件a.sh和b.sh
我想在a.sh执行一分钟(或几秒)后执行b.sh.
我应该在a.sh中编码什么?

7 个答案:

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