加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 处理执行Unix命令,产生无穷无尽的输出

发布时间:2020-12-16 18:16:25 所属栏目:安全 来源:网络整理
导读:一些unix命令如tail -f或启动 python web服务器(即cherrypy)将产生无限输出,即停止它的唯一方法是Ctrl-C.我正在开发一个执行命令的scala应用程序,我的实现是: import scala.sys.process._def exe(command: String): Unit = { command !} 但是,当命令生成无
一些unix命令如tail -f或启动 python web服务器(即cherrypy)将产生无限输出,即停止它的唯一方法是Ctrl-C.我正在开发一个执行命令的scala应用程序,我的实现是:

import scala.sys.process._
def exe(command: String): Unit = {
    command !
}

但是,当命令生成无限输出流时,应用程序会挂起,直到我终止它或终止命令启动的进程.我也尝试添加&在命令的最后,为了在后台运行它,但我的应用程序仍然挂起.

因此,我正在寻找另一种方法来执行命令而不会挂起我的应用程序.

解决方法

Seq("sh","-c","tail -f /var/log/syslog > /dev/null &") !

适合我.我认为Randall的答案失败了因为scala只是执行命令,并且不能解释像“&”这样的shell运算符.如果传递给scala的命令是“sh”并且参数是完整的shell命令,我们可以解决此问题. scala如何解析/分离单个参数似乎也存在问题,并且使用Seq而不是单个String对此更有效.

以上等同于unix命令:

sh -c 'tail -f /var/log/syslog > /dev/null &'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读