代码如下:

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进行设置定时的更多相关文章

  1. java代码实现对excel加密、解密(设置或去除打开密码)

    使用jxcell组件来完成对excel加密.解密的功能. jxcell.jar[点击下载](此jar没有使用限制,你懂得) 具体代码如下: import java.io.IOException; im ...

  2. C#代码实现对HTTP POST参数进行排序

    private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...

  3. Java如何实现对Mysql数据库的行锁

    场景如下:     用户账户有余额,当发生交易时,需要实时更新余额.这里如果发生并发问题,那么会造成用户余额和实际交易的不一致,这对公司和客户来说都是很危险的. 那么如何避免:     网上查了下,有 ...

  4. java中实现对list的模糊查询

    比如我有下面这样一个List,里面存放的是多个Employee对象.然后我想对这个List进行按照Employee对象的名字进行模糊查询.有什么好的解决方案么?比如我输入的查询条件为“wang”,那么 ...

  5. Java代码里利用Fiddler抓包调试设置

    Fiddler启动时已经将自己注册为系统的默认代理服务器,应用程序在访问网络时会去获取系统的默认代理,如果需要捕获java访问网络时的数据,只需要在启动java程序时设置代理服务器为Fiddler即可 ...

  6. 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验

    在struts2中,我们能够实现对action的全部方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1. 採用手工编写代码实现. 2. 基于XML配 ...

  7. JDOM方法实现对XML文件的解析

    首先要下载JDOM.jar包,下载地址:http://download.csdn.net/detail/ww6055/8880371 下载到JDOM.jar包之后导入到工程中去. 实例程序: book ...

  8. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

随机推荐

  1. Linux 操作系统常用的三种流012

    Linux 操作系统常用的三种流: 0 标准输入流 1 标准输出流 2 标准错误流 通常在写脚本启动程序,写log时候,会出现如下写法: nohup commod > log.txt 2> ...

  2. memcached 学习笔记 3

    适合什么场合 memcached不是万能的,它也不是适用在所有场合. Memcached是“分布式”的内存对象缓存系统,那么就是说,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的 ...

  3. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由SQL GM发表于云+社区专栏 介绍 对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来无限次地进行登录尝试.当 ...

  4. 【PhotoShop】模糊图片清晰处理

    1.Ctrl+J复制出背景副本.对副本模式选择“亮度”. 2.选择“滤镜”菜单下的“锐化>USM锐化”命令,在设置窗口中适当调节一下锐化参数,根据你原图模糊的情况来调节,本图采用锐化数量为“15 ...

  5. C# System.Timers.Timers的用法在工控设备上位中的用法

    这两天写设备的上位,由于要读取服务器上的数据库,通过WEBSERVICE访问数据库,我具体的做法是: 1.专门用Timer起线程执行,由于在用的时候报错,不能访问其他线程资源的错误,因此我用了委托的方 ...

  6. 二、多线程之Atomic包

    一.简介 1.原子操作 我们在使用变量的时候,经常会出现资源竞争的情况,为了保证变量安全,我们就会对对应的方法添加"synchronized"同步锁来达到目的,以保证线程安全. 而 ...

  7. java核心技术-内部类

    高级类特性-(类的成员之一:内部类) 内的成员之一:内部类(属性.方法.构造器.代码块) 可以有四种权限访问修饰符 注意:外部类 只有两种 public 和 default 定义 : 可以将一个类的定 ...

  8. PowerDesigner16使用方法

    网上下载一个破解版的PowerDesigner https://www.cnblogs.com/longshiyVip/p/4643871.html 1.新建一个Physical Data Model ...

  9. PostgreSQL Metadata

      http://www.devart.com/dotconnect/postgresql/docs/MetaData.html In this overload first parameter is ...

  10. Django实现数据库中表格的增删查改

    1.urls.py """Django_demo1 URL Configuration The `urlpatterns` list routes URLs to vie ...