java基础/java调用shell命令和脚本
一。项目需求:
从某一机构获取证书,证书机构提供小工具,执行.sh脚本即可启动服务,本地调用该服务即可获取证书。
问题:linux服务器启动该服务,不能关闭。一旦关闭,服务即停止。
解决方案:java调用shell命令,利用spring容器启动即执行方案。
参考博文:http://zohan.iteye.com/blog/1709136
项目结构:

原码:
1。RuntimeUtils.java
package com.csvalue.common; import org.springframework.util.StringUtils; import java.io.File;
import java.io.IOException; /*
* java调用sheet脚本工具类
* */
public class RuntimeUtils {
public static Process exec(String command, String envp, String dir)
throws IOException {
String regex = "\\s+";
String args[] = null;
String envps[] = null;
if (!StringUtils.isEmpty(command)) {
args = command.split(regex);
}
if (!StringUtils.isEmpty(envp)) {
envps = envp.split(regex);
}
return Runtime.getRuntime().exec(args, envps, new File(dir));
}
}
2。p10Server.java
package com.csvalue.service.impl; import com.csvalue.common.RuntimeUtils;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; /*
* Spring容器启动即启动sh脚本文件
* */
@Service
public class P10Server {
final org.slf4j.Logger log = LoggerFactory.getLogger(getClass());
@PostConstruct
public void init(){
System.out.println("启动p10服务:init....");
String command = "sh startup.sh";
String dir=RuntimeUtils.class.getResource("/").getPath()+"KTServer";
System.out.println(dir);
try {
RuntimeUtils.exec(command, null, dir);
//Process process = RuntimeUtils.exec(command, null, dir);
//int i = process.waitFor();
// System.exit(i);
}catch (Exception e){
log.error("启动p10异常:"+e.getMessage());
} }
}
注意:p10Server.java中注释掉的部分。若开启,则服务一直启动不起来!!!
java基础/java调用shell命令和脚本的更多相关文章
- Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群(三十六)
前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.cs ...
- java调用shell命令及脚本
shell脚本在处理文本及管理操作系统时强大且简单,将shell脚本结合到应用程序中则是一种快速实现的不错途径本文介绍使用java代码调用并执行shell 我在 -/bin/ 目录下写了jbossLo ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- python 调用shell命令三种方法
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...
- python 调用shell命令的方法
在python程序中调用shell命令,是件很酷且常用的事情…… 1. os.system(command) 此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出 ...
- Python 调用 Shell命令
python程序中调用shell命令,是件很酷且常用的事情今天来总结一下 1.使用os模块 的 system 此函数会启动子进程,在子进程中执行command,并返回comman ...
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
- Awk中调用shell命令
Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...
随机推荐
- python 反射、动态导入
1. 反射 hasattr(obj,'name') # 判断对象中是否含有字符串形式的方法名或属性名,返回True.False getattr(obj,'name',None) ...
- js - 基础 之 预编译总结
js运行步骤 语法解析(检查有无语法错误) 预编译 解释运行(将 js 翻译成计算机识别的语言(0.1组成),翻译一行执行一行) 预编译 [全局]: 创建 GO( Grobal Object ) 对象 ...
- <el-tree>文字显示不全解决办法(可以用省略号代替)
地址: https://www.jianshu.com/p/229f96b794d3
- 数据结构-STL序列式容器总结
根据序列在容器中的排列特性,将常见数据结构分为:序列式容器和关联式容器. 常见序列式容器有 1.array(build-in)c++內建 2.vector 3.heap(以算法方式呈现) 4.prio ...
- ssh复制公钥成功后仍需输入密码
1,网上说权限问题 登录流程: 被登录机器的文件权限: //用户权限 chmod 700 /home/username //.ssh文件夹权限 chmod 700 ~/.ssh/ // ~/.ssh/ ...
- Mysql 日期函数date_format()
用法:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据 1.语法 date_fromat(date,format) 说明:date 参数是合法的日期.format 规定日期/时间的输 ...
- php大文件上传支持断点上传
文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...
- [BZOJ3622]已经没有什么好害怕的了:DP+容斥原理
分析 说白了就是一道先DP再二项式反演的水题,然后被脑残博主把"多\(k\)组"看成了"糖果比药片能量大的组数恰好为\(k\)组",还改了各种奇怪的地方,最后看 ...
- springboot学习日志(二)-- thymeleaf学习
本次学习如何使用thymeleaf以及相关语法1.在上一章写的那样 引入jar包到maven工程 <dependency> <groupId>org.springframewo ...
- HDU6623 思维题(n分解成质因子的形式,问最小的幂是多少)
题目大意:给你一个数n,把它分解为素数的幂次的乘积的形式:n=p1^e1 * p2^e2 * .......pk^ek 求最小的幂次是多少 n=le18 分析: 首先我们肯定是不可以枚举1e18的因 ...