美文网首页scala
黑猴子的家:Scala 进程控制

黑猴子的家:Scala 进程控制

作者: 黑猴子的家 | 来源:发表于2019-06-06 08:59 被阅读24次

    我们可以使用scala来操作shell,scala提供了scala.sys.process包提供了用于shell程序交互的工具。

    1、执行shell

    import sys.process._
    "ls -al /"!
    "ls -al /"!!
    

    尖叫提示:!和!!的区别在于:process包中有一个将字符串隐式转换成ProcessBuild对象的功能,感叹号就是执行这个对象
    单感叹号的意思就是程序执行成功返回0,执行失败返回非0
    双感叹号,则结果以字符串的形式返回。

    2、管道符

    import sys.process._
    "ls -al /" #| "grep etc" !
    

    3、将shell的执行结果重定向到文件

    import sys.process._
    "ls -al /" #| "grep etc" !;
    "ls -al /" #>> new File("output.txt") !;
    

    4、maven打包在linux运行

    import sys.process._
    
    object ScalaShell {
      def main(args: Array[String]): Unit = {
        println("\n\n-----------哈哈哈哈哈哈--------------------")
        //返回0或 非0  , 0表示成功
        val v1 = "ls -al /opt"!;
        println(v1)
        //两个感叹号 表示返回字符串
        val v2 = "ls -al /opt/module"!!;
        println(v2)
        println("-----------哈哈哈哈哈哈-------------------\n\n")
      }
    }
    

    scala -cp scalastu-1.0-SNAPSHOT.jar unit16.ScalaShell

    5、scala不打包运行

    [root@hadoop102 module]# vim scalashell.scala
    
    import sys.process._
    object ScalaShell {
      def main(args: Array[String]): Unit = {
        println("\n\n-----------哈哈哈哈哈哈--------------------")
        //返回0或 非0  , 0表示成功
        val v1 = "ls -al /opt"!;
        println(v1)
        //两个感叹号 表示返回字符串
        val v2 = "ls -al /opt/module"!!;
        println(v2)
    
        println("-----------哈哈哈哈哈哈-------------------\n\n")
      }
    }
    

    [root@hadoop102 module]# scala scalashell.scala

    6、Scala 博弈

    来吧,自己扇自己的过程 ~ ~

    Scala 可以操作 Linux,可以操作shell,你想想这是多么可怕的一件事情,是不是可以干好多事情,Scala可以获取当前系统时间吧,Scala还能创建线程和进程吧,我们可以在Scala中使用定时器,去执行某一个任务,这样的话,我们连crontab都不用使用了,直接所有的任务调度用Scala写完,scala -cp xxx.jar xxx.xxx.main ,连oozie和azkaban这样的大型框架,都不用使用了,那么任务之间的流程控制怎么控制呢? Scala提供了方法
    p #&& q操作,即p任务执行成功后,则执行q任务
    p #|| q操作,即p任务执行不成功,则执行q任务
    尖叫提示:注意,每一个感叹号后边,有分号结束(linux环境运行)

    当然啦,各个技术栈有各个技术栈的优势和存在的意义。如果不触摸到某个领域的边缘,你是不会知道这个世间的锋利。所以,没必要把scala升华到多牛逼的境界。任何技术栈都有局限,局限在于你是否知道他的局限到底在哪。大道至简。我这样抬高scala,会让人以为,其他框架组件如此无用,对吧。

    scala可以获取当前系统时间,可以控制linux系统,这种功能几乎所有语言都可以简单做到。无法达到专门拿出来吹嘘的标准啊,让人无法信服scala确实牛逼,看你目的了,你要是说,我就要凸显scala牛逼,那这样说,显不出来。如果你要说scala可以做这些功能,那没问题。

    scala可以获取当前系统时间,可以控制linux系统,这种功能几乎所有语言都可以简单做到。无法达到专门拿出来吹嘘的标准啊,让人无法信服scala确实牛逼

    主要我看你语气和措辞是想让大家觉得这些功能牛逼到可怕

    scala进程还可以提供

    p #&& q操作,即p任务执行成功后,则执行q任务。
    p #|| q操作,即p任务执行不成功,则执行q任务。
    "ls -al /"

    既然这么强大,那么crontab + scala + shell,就完全不需要使用oozie了。

    相关文章

      网友评论

        本文标题:黑猴子的家:Scala 进程控制

        本文链接:https://www.haomeiwen.com/subject/axncxctx.html