package cn.stylefeng.guns.timer.jobhandler; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.log.XxlJobLogger; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader; /** * 命令行任务 * * @author xuxueli 2018-09-16 03:48:34 */ @JobHandler(value = "commandJobHandler") public class CommandJobHandler extends IJobHandler { @Override public ReturnT execute(String param) throws Exception { String command = param; int exitValue = -1; BufferedReader bufferedReader = null; try { // command process Process process = Runtime.getRuntime().exec(command); BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream()); bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream)); // command log String line; while ((line = bufferedReader.readLine()) != null) { XxlJobLogger.log(line); } // command exit process.waitFor(); exitValue = process.exitValue(); } catch (Exception e) { XxlJobLogger.log(e); } finally { if (bufferedReader != null) { bufferedReader.close(); } } if (exitValue == 0) { return IJobHandler.SUCCESS; } else { return new ReturnT(IJobHandler.FAIL.getCode(), "command exit value(" + exitValue + ") is failed"); } } }