11

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

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

4

7 回答 7

26

简单的。你想用'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启动时创建一个临时文件。执行是任务并在最后删除它的临时文件。 b.sh注意要创建的临时文件,然后删除。并开始其任务。

于 2012-05-08T10:56:18.053 回答
4

制作 a.sh 的最后一行:

sleep 60 && b.sh

(如果 b.sh 不在 PATH 中的目录中,请将其设为 b.sh 的完整路径。)

于 2012-05-08T10:49:50.043 回答
3

你可以sleep

a.sh
sleep 60
b.sh

或者对于更复杂的情况,您可以使用以下at命令:

echo b.sh | at now + 1 minute

有关更多信息,请参见at手册页。

于 2012-05-08T10:50:39.963 回答
1

使用at命令。

看看man at如何使用它。

于 2012-05-08T10:54:28.493 回答
0

您可以使用该命令将脚本休眠 1 分钟。

sleep 1m

然后当你想调用第二个脚本时

bash a.sh
于 2012-05-08T10:51:19.340 回答
0

如果您想在第一个脚本启动几秒钟后执行第二个脚本,您可以在第一个脚本中执行此操作:

b.sh &

这是第二个:

sleep 10
# more commands

您可以将秒数作为参数从第一个传递到第二个。

不幸的是,at时间增量不会超过一分钟。

于 2012-05-08T12:42:51.253 回答
0

安排两个脚本在 cron 中同时运行,并将所需的延迟放在 b.sh 中。

于 2016-09-13T12:02:12.157 回答