网站首页 > java教程 正文
一个工作流实例可以包含很多任务实例,各个任务实例有的有依赖顺序关系。
BASEDIR=$(cd `dirname $0`; pwd)
cd $BASEDIR
nowtime=`date +"%F %T"`
echo $nowtime >> $BASEDIR/shell.log
Shell01.sh
Shell02.sh
Shell03.sh
Shell04.sh
Shella.sh
Shellb.sh
一、【工作流执行正常的情况】
运行结果:
二、【假设shella.sh脚本错误,执行失败】
运行:
运行结果:
修改脚本为正确,重跑:
从结果可以分析,重跑,就说明是工作流重跑:
三、【将其中一个节点执行时间延长1000秒,并且在期间重启服务】
将shell03.sh 时间执行延长,模拟该实例执行时间较长:
BASEDIR=$(cd `dirname $0`; pwd)
cd $BASEDIR
nowtime=`date +"%F %T"`
for i in `seq 1 1000`
do
sleep 1
echo "$nowtime shell03 .....$i....." >> $BASEDIR/shell.log
done
echo "$nowtime shell03" >> $BASEDIR/shell.log
运行结果:
假设这个时候服务停止会如何呢?
发现分配的实例还是在执行:
经分析确实是没有系统调度的java进程:
启动服务:
sh script/start-all.sh
运行结果:
出现这个结果的原因是:停止服务,但是根本没有停止当时分配给shell03.sh的执行任务。
最后执行完毕:
注意恢复容错跟重跑是不一样的。恢复容错是从任务实例错误的开始执行,工作流重跑是头开始跑。
四、【中途停止】
恢复运行:
将shell03.sh执行时间延长1000秒,假设在这期间中途停止呢?会不会跟重启服务一样呢?
执行到shell03.sh的时候,停止
停止:
发现该任务实例的脚本shell03.sh也是出于停止状态,没有继续执行:
恢复
这也就是说明停止,他会杀死shell03.sh的任务实例,恢复运行,会对任务实例shell03.sh重新初始化执行。这个在运行过程中,停止系统调度服务是一样的,停止系统调度的服务他不会杀死shell。启动服务后,系统会容错恢复,也就是对当时刚好运行到某个任务实例,从那个任务实例开始重新初始化继续执行。
总结:在需要停机对系统调度进行维护的时候,最好是选择工作流任务少的时候,并且对其停止“中止服务”,然后停止系统调度服务,然后关机。终止工作流任务跟直接停止海豚系统任务(sh stop-all.sh)的主要区别的停止服务他未必能杀死工作流中的任务实例任务,虽然服务停止了,任务实例还有可能在执行。终止工作流任务它就会杀死相应的任务实例,其实这也很容易理解,任务实例其实可理解为被封装的一个任务进程,终止它当然是杀敌该进程,恢复——当然就是对这个任务实例重新初始化执行。
猜你喜欢
- 2025-07-24 JMeter前置处理器-Beanshell前置处理器详解
- 2025-07-24 Linux下crontab定时任务详解(linux定时任务怎么立刻生效)
- 2025-07-24 详细讲解性能测试(详细讲解性能测试题)
- 2025-07-24 什么是脚本文件?与可执行文件有什么不同?
- 2025-07-24 Shell编程基础及变量(shell编程语句)
- 2025-07-24 朋友研发的项目上线后频频崩溃,朋友的内心也是崩溃的
- 2025-07-24 Linux日常小技巧shell脚本2(linux shell脚本编写实例)
- 2025-07-24 打开对话框控件默认选择当前脚本所在文件夹的功能
- 2025-07-24 Linux系统Shell脚本语言之编程实践
- 2025-07-24 解决了的"xx: command not found"Linux Shell脚本中的错误
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)