Java:使用java调用shell命令并获取返回结果的代码

这篇具有很好参考价值的文章主要介绍了Java:使用java调用shell命令并获取返回结果的代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       如下提供一段简单的使用java调用shell命令并获取返回结果的代码,其中有获取正常返回结果和异常返回结果的处理方法,在实际使用时可根据实际情况进行调整。

调用此方法时传入实际执行的shell命令即可:文章来源地址https://www.toymoban.com/news/detail-661541.html

public static String execCmd(String cmd) throws Exception {
	String ret = "";
	String retErr = "";
	long startTime = System.currentTimeMillis();
	
	try {
		Process p = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", cmd});
		
		ret = IOUtils.toString(p.getInputStream(), StandardCharset.UTF_8);
		retErr = IOUtils.toString(p.getErrorStream(), StandardCharset.UTF_8);
		
		if (p.waitFor == 0) {
			if (ret!= null) {
				ret = ret.trime();
			}
			
			return ret;
		} else {
			if (retErr!= null) {
				retErr = retErr.trime();
			}
			
			throw new IOException("cmd=" + cmd + ", retErr=" + retErr);
		}
	} catch (Exception e) {
		LOG.error("cmd=" + cmd, e);
		
		throw e;
	} finally {
		long finishTime = System.currentTimeMillis();
		long timeUsed = finishTime - startTime;
		
		LOG.debug("timeUsed={}, cmd={}", timeUsed, cmd);
		LOG.trace("ret={}", ret);
	}
}

到了这里,关于Java:使用java调用shell命令并获取返回结果的代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本获取curl POST命令返回的http状态码

     在shell脚本中判断curl 发的post命令执行返回的http状态码,从而判断POST命令执行成功还是失败 有两种方法 status_code=`curl -s -o /dev/null -w \\\"%{http_code}\\\" -X POST \\\"http://xxx\\\"` 注意上述命令两边的符号 ``,是键盘上数字1左边的字符 status_code=$(curl -s -o /dev/null -w \\\"%{http_code}\\\" -X POST \\\"http://xxx

    2024年02月12日
    浏览(43)
  • SpringBoot 使用【AOP 切面+注解】实现在请求调用 Controller 方法前修改请求参数和在结果返回之前修改返回结果

    在项目中需要实现 在请求调用 Controller 方法前修改请求参数和在结果返回之前修改返回结果 。 我们可以使用 AOP 切面+注解的形式实现。这样我们就可以在不修改原始代码的情况下,通过切面类在方法调用前后插入额外的逻辑。 自定义注解 @PreProcess 自定义注解 @PreProcess 用于

    2024年03月20日
    浏览(45)
  • 使用多线程执行任务,并获取返回结果,附异步实现

    这里创建了一个包含三个线程的固定线程池 线程池的介绍 根据主机情况实现自定义线程池: 也可以通过继承 ThreadPoolExecutor 类来实现一个自定义线程池工具类。ThreadPoolExecutor 是 Java 标准库中提供的一个线程池实现,通过继承它,我们可以实现自定义的线程池。 下面是一个继

    2024年02月16日
    浏览(40)
  • java多线程怎么同步返回结果

    在 Java 多线程中,如果需要等待线程执行完成并返回结果,可以使用 Java 的线程同步机制来实现。以下是一些常用的方式: 使用 join() 方法:可以使用线程的 join() 方法来等待线程执行完成。在主线程中调用 join() 方法,会阻塞主线程,直到该线程执行完成。在被等待的线程执

    2024年02月14日
    浏览(32)
  • 大数据平台开发——使用Java和Python调用Shell脚本

    大数据平台开发——使用Java和Python调用Shell脚本 在大数据平台开发中,经常会遇到需要调用Shell脚本的场景,倒不是说只能用Shell,毕竟大数据开发到头来一定是个语言无关的事情: 从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala:https://lizhiyong.blog.csdn.net/article/deta

    2023年04月09日
    浏览(48)
  • java 异步执行代码(先返回结果,后执行代码)

            在用户那,角色那变更后,要更新数据,因为更新要比较长时间,需要先返回结果(2:已接收待执行)。更新结束后,再返回值结果。 (执行结果. 0:执行失败 ; 1:执行成功; 2:已接收待执行) 使用 ExecutorService 异步 加 Thread.sleep(1000 * 10); 就明显看得出差别了。

    2024年02月09日
    浏览(47)
  • java 异步执行代码(先返回结果,后执行代码

            在用户那,角色那变更后,要更新数据,因为更新要比较长时间,需要先返回结果(2:已接收待执行)。更新结束后,再返回值结果。 (执行结果. 0:执行失败 ; 1:执行成功; 2:已接收待执行) 使用 ExecutorService 异步 加 Thread.sleep(1000 * 10); 就明显看得出差别了。

    2024年02月12日
    浏览(37)
  • Java后端大写字段传到前端,或者使用postman调用后,返回变为小写

    比如,我有一个类,然后该类中有一个字段 默认使用的是Jackson解析。Jackson在解析返回的json字符串时,全部大写字段被转为小写了,首字母如果是大写也会被转为小写 我在传输给前端,或者使用postman调用,或者存储到redis的时候,发现该字段不是YTD,而是ytd,没办法满足我

    2024年02月12日
    浏览(47)
  • 微信小程序使用自定义tabbar 想要获取tabbar的高度,返回的结果是null,该如何获取?

    在使用自定义tabbar时,你可能会需要获取tabbar的高度,但是按照网上的方法却得不到正确的结果,这让你十分头疼。那么该怎么办呢?小编为大家整理了以下几个方法,希望能够帮到大家。 1️⃣ 使用wx.getSystemInfoSync()方法获取系统信息,然后通过计算得出tabbar的高度。 示例

    2024年02月11日
    浏览(63)
  • JAVA开发(通过网关gateway过滤器进行返回结果加密)

    在对C的网站或者APP后端接口中,参数的传输往往需要加密传输。这时我们 可以通过springcloud的网关过滤器进行统一的控制。 网关过滤器的执行顺序: 请求进入网关会碰到三类过滤器:当前路由过滤器、DefaultFilter、GlobalFilter。 请求路由后,会将当前路由过滤器和DefaultFilter、

    2023年04月17日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包