แอสเซมบลี sbt: เรียกใช้เว็บเซิร์ฟเวอร์โดยไม่ขึ้นกับเซสชัน ssh

ฉันต้องการให้ sbt เป็นอิสระจากเซสชัน ssh ของฉัน ฉันได้ติดตั้ง sbt-assembly แล้ว

ฉันจัดการให้มี มันคายขวดไขมันออกมาหลังจากทำการทดสอบ

[info] Assembly up to date: /home/../target/scala-2.11/root-assembly-0.1.jar
[success] Total time: 6 s, completed Aug 10, 2015 2:43:06 PM

อย่างไรก็ตาม ฉันไม่สามารถเข้าใจสิ่งที่จะเกิดขึ้นต่อไปได้ หน้าตา build.sbt ของฉันเป็นแบบนี้

lazy val root = (project in file(".")).
        settings(
                organization  := "hidethis",
                version       := "0.1",
                scalaVersion  := "2.11.6",
                scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),
                unmanagedBase := baseDirectory.value / "custom_lib",
                mainClass in Compile := Some("webserver.Root")
        )

libraryDependencies ++= {
  val akkaV = "2.3.9"
  val sprayV = "1.3.3"
  Seq(
    "io.spray"            %%  "spray-can"     % sprayV,
    "io.spray"            %%  "spray-routing" % sprayV,
    "io.spray"            %%  "spray-json"    % "1.3.2",
    "io.spray"            %%  "spray-testkit" % sprayV  % "test",
    "com.typesafe.akka"   %%  "akka-actor"    % akkaV,
    "com.typesafe.akka"   %%  "akka-testkit"  % akkaV   % "test",
    "org.specs2"          %%  "specs2-core"   % "2.3.11" % "test",
    "org.scalikejdbc" %% "scalikejdbc" % "2.2.7",
    "org.postgresql" % "postgresql" % "9.4-1200-jdbc41"
  )
}

Revolver.settings

มีตัวอย่างในหน้าบทช่วยสอน sbt-assembly ที่มีลักษณะดังนี้:

lazy val app = (project in file("app")).
  settings(commonSettings: _*).
  settings(
    // your settings here
  )

แต่ฉันไม่แน่ใจว่ามันทำงานอย่างไร


person NoIdeaHowToFixThis    schedule 10.08.2015    source แหล่งที่มา
comment
ในคำถามที่คุณพูดถึงมีโค้ดบรรทัดที่สอง nohup scala ./target/scala-2.10/trafficgenerator_2.10-1.0.jar & มันไม่ใช่สิ่งที่คุณต้องการใช่ไหม   -  person Tyth    schedule 10.08.2015
comment
ฉันเข้าใจว่า nohup เป็นอีกทางเลือกหนึ่งในการให้ sbt-assembly ดูแลทุกขั้นตอน   -  person NoIdeaHowToFixThis    schedule 10.08.2015
comment
ไม่ sbt-assembly ช่วยให้คุณกำจัด sbt บนเซิร์ฟเวอร์เรียกใช้งานได้ โดยรวบรวมการขึ้นต่อกันทั้งหมดไว้ในขวดเดียว ฉันเดาว่าคุณสามารถใช้ nohup sbt run ได้ แต่ไม่เคยลองด้วยตัวเองเลย   -  person Tyth    schedule 10.08.2015
comment
sudo nohup sbt run & exit ส่งคืน [1] 14747 logout ต่อไปนี้ แต่ดูเหมือนว่าเซิร์ฟเวอร์ล่ม   -  person NoIdeaHowToFixThis    schedule 10.08.2015


คำตอบ (1)


เป็นทางเลือกแทน nohup คุณสามารถใช้ screen มันจะสร้างเทอร์มินัลเสมือนที่คุณสามารถถอดออกได้ เช่น:

$ echo $FOO
>
$ screen
$ FOO="bar"
$ echo $FOO
> bar

ตอนนี้คุณพิมพ์ Ctrl-a-d เพื่อแยกหน้าจอ

[detached]
$ echo $FOO
>

ณ จุดนี้ คุณสามารถยุติเซสชันของคุณได้ เมื่อคุณกลับเข้าไปในเครื่อง คุณสามารถกู้คืนได้

$ screen -r # this recovers your screen
$ echo $FOO
bar

ในกรณีของคุณ คุณจะต้อง ssh ไปที่เครื่อง screen จากนั้นเริ่มโปรแกรมของคุณด้วย sbt หรือ java my-big-jar เมื่อทำงานแล้ว ให้ถอดหน้าจอออกและปิดเซสชัน ssh โปรแกรมจะทำงานต่อไป

person Adama    schedule 13.08.2015