如何在Bash中循环执行脚本并在每次运行之间设置1小时间隔
Bash 定时循环执行脚本方案
直接可用的单行命令
你可以直接在终端执行下面这条命令,就能实现你要的需求:
for i in {1..20}; do node RocketLaunch.js; sleep 3600; done
各部分逻辑说明:
for i in {1..20}定义循环总次数为20次,匹配你的执行次数要求- 每次循环会先完整执行
node RocketLaunch.js,等待脚本运行结束(你的单轮任务耗时5分钟,不会被中途打断) - 脚本运行完成后执行
sleep 3600,等待1小时后再启动下一轮循环
如果你需要两次脚本启动时间间隔为1小时,扣除脚本本身5分钟的运行耗时,把
sleep 3600改成sleep 3300即可。
可重复启动的脚本方案
如果你后续需要经常启动整套执行流程,可以把逻辑封装成独立的Bash脚本,不用每次输入长命令:
- 新建
run_rocket.sh文件,写入以下内容:
#!/bin/bash for run_count in {1..20} do echo "第 $run_count 次执行,当前时间:$(date)" node RocketLaunch.js echo "当前轮次执行完成,等待1小时后启动下一轮" sleep 3600 done echo "全部20次执行任务已完成"
- 给脚本添加执行权限:
chmod +x run_rocket.sh
- 后续需要启动整套流程时,直接执行以下命令即可:
./run_rocket.sh
实用补充说明
- 如果你需要关闭终端后任务仍在后台运行,启动时用
nohup ./run_rocket.sh &即可,运行日志会自动保存在同目录的nohup.out文件中 - 前台运行时想终止任务,直接按
Ctrl + C即可;后台运行的话可以先执行ps aux | grep run_rocket.sh查询进程ID,再执行kill 进程ID终止任务
内容的提问来源于stack exchange,提问作者Learning Panther
相关产品推荐
相关产品推荐

