• java执行shell命令,Runtime.exec()和jsch谁更有优势?


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 鱼摸摸 2024-04-02 16:18 采纳率: 0% 浏览 7 首页/ 编程语言 / java执行shell命令,Runtime.exec()和jsch谁更有优势? javalinuxssh java在linux平台,执行本机命令,众所周知都是使用Runtime.getRuntime().exec(command)获取一个Process类但是都说这种方式各种坑,什么资源消耗大,频繁创建销毁代价大,缓冲区被打满导致死锁什么的这里不考虑缓冲区死锁问题(因为有解决方案),就想知道这种方式开销有多大,shell频繁场景适用什么技术实现? 有场景如下:有50个shell命令(只是目前水平,后续会更多),java需要定时执行shell,获取结果后解析入库。每个命令的定时时间从1分钟到30分钟不等,这样的场景下Runtime.getRuntime().exec还能用吗,有没有更好的选择? 目前有一种方式,同事因为怕搞不定Runtime.getRuntime().exec的坑,使用jsch封装的方法实现的。我们都知道jsch是成熟的ssh方案,就是远程执行shell命令,同事在这里直接ssh了自己(本机),然后用jsch做的这个场景。那么如果用jsch以ssh的方式执行本机命令(ssh自己)的开销又如何呢? 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    3条回答 默认 最新

    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-02 16:18
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      🤔: java执行shell命令,Runtime.exec()和jsch谁更有优势?
      大模型正在努力处理问题中⏳⏳⏳,请稍后

      评论
    • GISer Liu 2024-04-02 17:07
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      针对您的问题,我会尽力提供详细的解答。
      首先,对于执行本机命令,Runtime.getRuntime().exec() 和使用 jsch
      这两种方式都是可行的,但各有优劣。

      1. Runtime.getRuntime().exec()方式:
      • 优势:简单易用,对于简单的场景可以满足需求。
      • 劣势:存在资源消耗大、频繁创建销毁代价大等问题。对于您描述的需要频繁执行多个命令的场景,可能不太适合,特别是如果存在频繁创建销毁的情况,可能会影响性能。
      1. 使用 jsch 方式:
      • 优势:jsch 是成熟的 SSH 方案,稳定性高,支持远程执行命令,也可以用于本地执行命令。可以避免 Runtime.getRuntime().exec() 的一些问题。
      • 劣势:相对于直接调用本地命令,jsch 方式可能稍微复杂一些,需要额外的代码来建立 SSH 连接。
        针对您描述的场景,如果您已经有同事使用 jsch 成功封装了方法,而且 jsch
        也可以用于本地执行命令,那么我建议您可以考虑继续沿用 jsch 方式。使用 jsch
        的开销相对较小,且稳定性较高,可以更好地应对您描述的需求。
        当然,您也可以根据具体情况进行测试,比较这两种方式在您的场景下的性能表现,以选择最适合您需求的方式。
        如果您需要更详细的代码示例或其他方面的帮助,请随时告诉我,我会尽力帮助您解决问题。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      评论
      鱼摸摸 2024-04-02 17:54

      是的,我主要的关注点就是哪种方式开销小,适合大量执行本地shell命令的场景,你也提到Runtime开销大,开销真的很大吗,甚至执行本机命令都不如jsch的ssh方式?

      回复
      GISer Liu 2024-04-02 17:55

      根据您的问题描述,您想要在 Echarts 树图中的边上方显示文字,并且不是所有线段都需要显示红色字体。您可以按照以下步骤来实现:

      1. 找到需要显示文字的边的索引 :Echarts 中的边是通过节点的 children 属性来表示的,您可以通过索引找到对应的边。
      2. 设置边的文字显示 :在 series 中的 links 属性中找到对应索引的边,设置 label 属性。其中,normal 表示默认状态下的样式,emphasis 表示鼠标悬停时的样式,您可以根据需要设置文字的样式。
      3. 控制文字显示与样式 :在 label 属性中设置 showtrue,表示显示文字,设置 formatter 属性为需要显示的文字内容。您可以通过函数动态设置,也可以直接设置为固定的文本内容。
        示例代码如下:
        javascriptCopy code
        option = {
        series: [{
        type: 'tree',
        data: [...],  // 节点数据
        links: [...],  // 边数据
        label: {
        normal: {
        show: false,  // 默认不显示文字
        },
        emphasis: {
        show: true,  // 鼠标悬停时显示文字
        formatter: function(params) {
        // 根据需要设置文字内容,params 中包含了边的相关信息
        return params.name + '的文字内容';
        },
        position: 'top',  // 文字显示在边的上方
        color: 'red'  // 设置文字颜色为红色
        }
        },
        lineStyle: {
        color: '#ccc'  // 设置边的颜色
        }
        }]
        };
        
        在这个示例中,links 数组中的每个元素对应一条边,通过设置 label 属性来控制是否显示文字以及文字的样式。

      回复
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-02 18:15
      关注

      【相关推荐】




      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    基于Spring的发布订阅模式 EventListener
    [附源码]计算机毕业设计游戏论坛网站Springboot程序
    Redis-使用java代码操作Redis
    求组合数(递推法)
    深入Rust:探索所有权和借用机制
    图解LeetCode——793. 阶乘函数后 K 个零(难度:困难)
    小样本学习--(1)概论
    CSS3 简介
    linux:系统状态检测命令
    iOS 全平台矢量动画库:体积小巧、功能丰富 | 开源日报 No.227
  • 原文地址:https://ask.csdn.net/questions/8082781