如何在一分钟后启动一个shell脚本?
假设有两个 bash 文件 a.sh 和 b.sh
我想在 a.sh 执行后一分钟(或几秒)执行 b.sh。
我应该在 a.sh 中编码什么?
如何在一分钟后启动一个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% 确定它不会超过或少于一分钟。就是这样。b.sh
可以在a.sh
完成之前启动。或者a.sh
可能比“计划”提前 30 秒完成,并且 b.sh 可能启动得更快。
我会推荐一个不同的模型。首先在哪里b.sh
启动。
a.sh
启动时创建一个临时文件。执行是任务并在最后删除它的临时文件。
b.sh
注意要创建的临时文件,然后删除。并开始其任务。
制作 a.sh 的最后一行:
sleep 60 && b.sh
(如果 b.sh 不在 PATH 中的目录中,请将其设为 b.sh 的完整路径。)
你可以sleep
:
a.sh
sleep 60
b.sh
或者对于更复杂的情况,您可以使用以下at
命令:
echo b.sh | at now + 1 minute
有关更多信息,请参见at
手册页。
使用at
命令。
看看man at
如何使用它。
您可以使用该命令将脚本休眠 1 分钟。
sleep 1m
然后当你想调用第二个脚本时
bash a.sh
如果您想在第一个脚本启动几秒钟后执行第二个脚本,您可以在第一个脚本中执行此操作:
b.sh &
这是第二个:
sleep 10
# more commands
您可以将秒数作为参数从第一个传递到第二个。
不幸的是,at
时间增量不会超过一分钟。
安排两个脚本在 cron 中同时运行,并将所需的延迟放在 b.sh 中。