Java代码实现对Azkaban的Flow进行设置定时
代码如下:
public class CurlToAzkaban{
public static void scheduleExecute(String flow, String cronExpression) throws IOException {
//0 23/30 5,7-10 ? * 6#3
// String command = "bash /Users/peilongcheng/gitcode/GitAzkaban/src/main/java/com/maihaoche/baiyan/shell/azkaban_schedule.sh " +flow +" \""+cronExpression+"\" "+CurlToAzkaban.getAuthenticate();
Process process = null;
Runtime runTime = Runtime.getRuntime();
//这里用commands是为了解决空格问题
String[] commands = new String[]{"/Users/peilongcheng/gitcode/GitAzkaban/src/main/java/com/maihaoche/baiyan/shell/azkaban_schedule.sh",flow,cronExpression,CurlToAzkaban.getAuthenticate() };
process = runTime.exec(commands);
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 定义shell返回值
StringBuffer result = new StringBuffer();
// 获取shell返回流
BufferedInputStream in = new BufferedInputStream(process.getInputStream());
// 字符流转换字节流
BufferedReader br = new BufferedReader(new InputStreamReader(in));
// 这里也可以输出文本日志
String lineStr = null;
while ((lineStr = br.readLine()) != null) {
result.append(lineStr + "\n");
}
// 关闭输入流
br.close();
in.close();
System.out.println(result);
if(result.toString().contains("success"))
System.out.println("Schedule " + flow + " Success!!!");
else System.out.println("Schedule " + flow + " Failed!!!");
}
public static void main(String args[]) throws IOException {
CurlToAzkaban.scheduleExecute("b","0 */5 * * * ?");
}
}
shell脚本如下:
#!/bin/bash
curl -k -d ajax=scheduleCronFlow -d projectName=ODPS -d flow="$1" --data-urlencode cronExpression="$2" -b "azkaban.browser.session.id=$3" http://localhost:8081/schedule
难点在于
- 1.如何传递给shell带空格的字符串
- 2.如何避免*被转义(在shell引用对地方加双引号)
Java代码实现对Azkaban的Flow进行设置定时的更多相关文章
- java代码实现对excel加密、解密(设置或去除打开密码)
使用jxcell组件来完成对excel加密.解密的功能. jxcell.jar[点击下载](此jar没有使用限制,你懂得) 具体代码如下: import java.io.IOException; im ...
- C#代码实现对HTTP POST参数进行排序
private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...
- Java如何实现对Mysql数据库的行锁
场景如下: 用户账户有余额,当发生交易时,需要实时更新余额.这里如果发生并发问题,那么会造成用户余额和实际交易的不一致,这对公司和客户来说都是很危险的. 那么如何避免: 网上查了下,有 ...
- java中实现对list的模糊查询
比如我有下面这样一个List,里面存放的是多个Employee对象.然后我想对这个List进行按照Employee对象的名字进行模糊查询.有什么好的解决方案么?比如我输入的查询条件为“wang”,那么 ...
- Java代码里利用Fiddler抓包调试设置
Fiddler启动时已经将自己注册为系统的默认代理服务器,应用程序在访问网络时会去获取系统的默认代理,如果需要捕获java访问网络时的数据,只需要在启动java程序时设置代理服务器为Fiddler即可 ...
- 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验
在struts2中,我们能够实现对action的全部方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1. 採用手工编写代码实现. 2. 基于XML配 ...
- JDOM方法实现对XML文件的解析
首先要下载JDOM.jar包,下载地址:http://download.csdn.net/detail/ww6055/8880371 下载到JDOM.jar包之后导入到工程中去. 实例程序: book ...
- Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
随机推荐
- switch表达式、case穿透
记得第一次学switch的时候那是还是学习c语言的时候,整体的写if-else,switch,现在回想起来已经是很多年前的事了,好了今天让我们再来回顾下简单的switch 语法 switch(n) { ...
- Wireshark命令行工具tshark详解(含例子)-01
Wireshark命令行工具tshark使用小记 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把D ...
- WPF通过<x:Array>直接为ListBox的ItemsSource赋值
<!--其中sys前缀是在xmlns中引入了System的命名空间--> <ListBox.ItemsSource> <x:Array Type="{x:Typ ...
- *2.3.4_封装成agent
上一节在验证平台中加入monitor时,读者看到了driver和monitor之间的联系:两者之间的代码高度相似.其本质是因为二者处理的是同一种协议,在同样一套既定的规则下做着不同的事情.由于二者的这 ...
- 2016年学习JavaScript是怎样的一种体验(转)
转自:http://www.zcfy.cc/article/how-it-feels-to-learn-javascript-in-2016-hacker-noon-1871.html 在这篇文章的写 ...
- Idea软件Vim插件问题
人家说用webstorm是纯前端,用Idea是java+前端,好,那就用Idea,装上试试,全选所有插件安装,奇迹出现了,选中一行代码,backspace,删不了,我的天,好吧,复制粘贴的快捷键也不行 ...
- PHP项目学习2
通过<PHP项目学习1>基本上可以了解项目的大致结构.内容,现在直接从代码入手,开始coding吧. 现在部署环境中建立一个myonline的文件夹,便于放置我们的项目
- Html-完整表格
表头th 特殊的单元格:加粗.居中 它的用户是取代td的位置即可 <table border="2"> <tr> <th>姓名</th&g ...
- Knockout.js Text绑定
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- layer子窗口与父窗口传值
layer作为优秀的jquery框架,可以用作弹出组件.日历.分页等,而且实现简单,只有几十k的大小. 此处给出弹出窗口时子窗口与父窗口的传值.js和css这里不展示引入(以下给出目录结构的图片),仅 ...