linux 下部署spring定时任务执行shell脚本,shell脚本执行spoon

1  登录linux 后 编辑.bashrc 
export PATH=$PATH:/mnt/spoon
/mnt/spoon  为使用到的应用的环境,下面包含.sh等文件
2  设置要运行sh文件的路径
echo  获取当前sh文件的父级目录
basepath=$(cd `dirname $0`; pwd)
echo $basepath
kjbpath=$(cd `dirname $0`; pwd)/Templates/programsSqlServer/syncBocDataToMysql.kjb
echo $kjbpath
logpath=$(cd `dirname $0`; pwd)/logs/syncBocDataToMysql`date '+%Y%m%d%H%M%S'`.log
echo $logpath
$basepath/kitchen.sh -file:$kjbpath -level:Basic >$logpath
3  给该sh文件设置可运行权限
chmod 777 *.sh
4 如果生成的日志文件有? 是因为linux和windows环境的问题
直接在liunx服务器上编辑创建该sh文件并记得授权

basepath=$(cd `dirname $0`; pwd)  解释
dirname $0,取得当前执行的脚本文件的父目录
cd `dirname $0`,进入这个目录(切换当前工作目录)
pwd,显示当前工作目录(cd执行后的)


basepath=$(cd `dirname $0`; pwd)
echo $basepath
kjbpath=$(cd `dirname $0`; pwd)/Templates/programsSqlServer/syncBocDataToMysql.kjb
echo $kjbpath
logpath=$(cd `dirname $0`; pwd)/logs/syncBocDataToMysql`date '+%Y%m%d%H%M%S'`.log
echo $logpath
$basepath/kitchen.sh -file:$kjbpath -level:Basic > $logpath

在spring定时任务中sh里面的路径需要写全路径,且代码如下
try {
	ProcessBuilder builder = new ProcessBuilder(new String[]{path});  
	pcs = builder.start();
	String line = null;
	buf = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
	while ((line = buf.readLine()) != null) {
		logger.info(line);
	}
	stdError = new BufferedReader(new InputStreamReader(pcs.getErrorStream()));
	while ((line = stdError.readLine()) != null) {  
		 logger.error(line);
      }  
	try {
		runningStatus = pcs.waitFor();
	} catch (InterruptedException e) {
		runningStatus = 1;
		logger.error("等待shell脚本执行状态时,报错...", e);
	}
	if(runningStatus == 0){//成功  
		logger.info("本次shell脚本执行成功");
	}else{  
		logger.info("本次shell脚本执行失败");
	}
} catch (Exception e) {
	logger.error("执行shell脚本执行报错...", e);
}finally{
	try {
		if(buf!=null){
			buf.close();
		}
	} catch (Exception e) {
		logger.error("关闭pcs getInputStream失败", e);
	}
	try {
		if(stdError!=null){
			stdError.close();
		}
	} catch (Exception e) {
		logger.error("关闭pcs getErrorStream失败", e);
	}
	try {
		if(pcs!=null){
			pcs.destroy();
			logger.info("关闭pcs成功");
		}
	} catch (Exception e) {
		logger.error("关闭pcs失败", e);
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package generconfig; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; import org.springframework.context.support.GenericXmlApplicationContext; import com.pactera.service.schedule.ThreadReadPath; import com.pactera.util.CommTool; /*打包用File->Export->runnable JAR File Export Launch选择对应的类 Export destination 选择地址 Library handling:Copy required */ public class SMSThreadSender { public static void main(String[] args) { if(args.length==0) { System.out.println("短信服务开启,开始加载Spring配置。"); GenericXmlApplicationContext context = new GenericXmlApplicationContext(); context.setValidating(false); context.load("classpath:sysconfig/applicationContext.xml"); context.refresh(); System.out.println("开整·~~~~"); CommTool.smsthreadisruning=true; ThreadReadPath thread = new ThreadReadPath(); thread.smsname="sms"+CommTool.threadid; Thread t1 = new Thread(thread); t1.setName("sms"); t1.start(); System.out.println("已经启动"); } if(args.length==1) { String pfile=args[0]; System.out.println("短信服务开启,开始加载Spring配置。"+pfile); GenericXmlApplicationContext context = new GenericXmlApplicationContext(); context.setValidating(false); context.load(pfile); // context.load("classpath:sysconfig/applicationContext.xml"); context.refresh(); CommTool.smsth

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值