提供了一个执行Linux Shell命令的执行器代码,名称为shellJobHanlder,具体的Shell命令填写到任务的"执行参数"上。

pull/2/head
zhangqunshi 9 years ago
parent 12b4fbd203
commit e1fa4a621d

@ -0,0 +1,49 @@
package com.xxl.job.executor.service.jobhandler;
import com.xxl.job.core.handler.IJobHandler;
import org.springframework.stereotype.Service;
import com.xxl.job.core.handler.annotation.JobHander;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Linux Shellshell
*
* @author zhangqunshi@126.com
*/
@JobHander(value = "shellJobHandler")
@Service
public class ShellJobHandler extends IJobHandler {
private static transient Logger logger
= LoggerFactory.getLogger(ShellJobHandler.class);
@Override
public void execute(String... params) throws Exception {
// 上层只传了一个参数,并没有分解 :(
if (params != null && params.length > 0) {
logger.info("Run command: " + Arrays.toString(params));
} else {
throw new Exception("Shell command is required!");
}
String[] cmd = params[0].split(" "); //使用空格把命令字符串分解
Process process;
process = Runtime.getRuntime().exec(cmd, null, null);
InputStreamReader in = new InputStreamReader(process.getInputStream());
LineNumberReader reader = new LineNumberReader(in);
int exitCode = process.waitFor();
logger.info("exit code: " + exitCode);
String line;
while ((line = reader.readLine()) != null) {
logger.info(line);
}
}
}
Loading…
Cancel
Save