如何在一分钟后启动一个shell脚本?如何在一分钟后在linux中启动一个shell脚本?
假设有两个bash文件a.sh和b.sh
我想在a.sh执行后执行b.sh一分钟(或几秒)。
我应该在a.sh中编码?
如何在一分钟后启动一个shell脚本?如何在一分钟后在linux中启动一个shell脚本?
假设有两个bash文件a.sh和b.sh
我想在a.sh执行后执行b.sh一分钟(或几秒)。
我应该在a.sh中编码?
简单。你想用'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 &
这:
使a.sh的最后一行:
sleep 60 && b.sh
(如果b.sh不是在路径的目录,使之成为完整路径b.sh.)
你可以只是sleep
:
a.sh
sleep 60
b.sh
或者更复杂的情况下,你可以使用at
命令:
echo b.sh | at now + 1 minute
有关更多信息,请参阅at
手册页。
我会尝试后面的 –
不,它会按预期执行b.sh顺便说一句,如何在10秒后执行它?我将分钟改为秒,它说语法错误。 –
@alexchan:'at'的时间增量不会超过一分钟。 –
您可以使用该命令来休眠脚本1分钟。
sleep 1m
然后,当你要拨打的第二个脚本
bash a.sh
使用at
命令。
请参阅man at
了解如何使用它。
如果你想第一个脚本的开始后,执行第二脚本的秒一些号码,就可以在第一做到这一点
sleep 10
# more commands
您可以将秒数作为参数从第一秒传递到第二秒。
不幸的是,at
时间增量不会超过一分钟。
安排两个脚本在cron中同时运行,并在b.sh中放置所需的延迟。
是的,谢谢!这正是我想要的。但是也许有一点错误?它说“日期无效选项--v” –
@alexchan:不同版本的'date'支持不同的选项。试试:'echo b.sh |现在+ 1分钟“ –
b.sh会在可视窗口中执行吗?如何? –