2012-05-08 33 views

回答

17

简单。你想用'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%确定它不会花多于一分钟。而已。在a.sh完成之前可以启动b.sh。或a.sh可能比“计划”提前30秒完成,而b.sh本可以开始更快。

我会推荐一个不同的模型。其中b.sh是首次推出。 a.sh在启动时创建临时文件。执行是任务并在最后删除它的临时文件。 b.sh监视要创建的临时文件,然后删除。并开始其任务。在第二

b.sh & 

这:

+1

是的,谢谢!这正是我想要的。但是也许有一点错误?它说“日期无效选项--v” –

+3

@alexchan:不同版本的'date'支持不同的选项。试试:'echo b.sh |现在+ 1分钟“ –

+0

b.sh会在可视窗口中执行吗?如何? –

2

使a.sh的最后一行:

sleep 60 && b.sh 

(如果b.sh不是在路径的目录,使之成为完整路径b.sh.)

3

你可以只是sleep

a.sh 
sleep 60 
b.sh 

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

echo b.sh | at now + 1 minute 

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

+0

我会尝试后面的 –

+0

不,它会按预期执行b.sh顺便说一句,如何在10秒后执行它?我将分钟改为秒,它说语法错误。 –

+0

@alexchan:'at'的时间增量不会超过一分钟。 –

0

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

sleep 1m 

然后,当你要拨打的第二个脚本

bash a.sh 
0

如果你想第一个脚本的开始后,执行第二脚本的秒一些号码,就可以在第一做到这一点

sleep 10 
# more commands 

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

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

0

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

相关问题