java设置linuxshell变量执行脚本


db.stop.sh

##db.stop.sh
su - sybase -c \"isql -Usa -P$SA_PWD -SlogDB\" << EOF
use master
go
checkpoint
go
shutdown SYB_BACKUP with nowait
go
shutdown with nowait
go
exit
EOF
sleep 60
echo "Database STOP done."


执行命令方法:

/**
	 * 执行本地命令并返回结果
	 * @param cmd 本地命令
	 * @param env 环境变量
	 * @param dir
	 * @return
	 * @throws IOException 
	 * @throws InterruptedException 
	 */
	static String exec(String cmd, String[] env, File dir) 
			throws IOException, InterruptedException{
		String res = "";
		int state = 0;
		byte[] buff = new byte[1024];
		int readLen = 0;
		InputStream stdIn = null;
		InputStream stdErr = null;
		
		try{			
			Runtime r = Runtime.getRuntime();
			Process p = r.exec(cmd, env, dir);			
			stdIn = p.getInputStream();
			stdErr = p.getErrorStream();
			state = p.waitFor();
			
			if(0==state){
				while(-1!=(readLen=stdIn.read(buff))){
					res = (new String(buff,0,readLen));
				}
				
				while(-1!=(readLen=stdErr.read(buff))){
					res = (new String(buff,0,readLen));
				}
			}else{
				res = "__ERROR__:"+state;
			}
		}finally{
			try{
				if(null!=stdIn) stdIn.close();
			}catch(Exception ex){				
			}
			
			try{
				if(null!=stdErr) stdErr.close();
			}catch(Exception ex){				
			}		
		}
		
		return res;
	}

测试类:

static void t5(){		
		try {
			String res = exec(
					"bash db.stop.sh", 
					new String[]{"SA_PWD=123456"}, 
					null);
			System.out.println(res);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值