SBT在斯卡拉被杀后不要杀死孩子的过程?

时间:2015-10-12 16:07:52

标签: linux scala playframework sbt nohup

我在Scala和Play中运行脚本:

val pb = Process(s"bash $path/script.sh") pb.run

脚本在后台启动后台进程,即使sbt被终止也应该开始运行。这是脚本:

#!/bin/bash nohup liquidsoap liquidsoap.ls >/dev/null 2>&1 & echo $! > liquidsoap.pid

问题在于即使在使用nohup并重定向输出之后。当我杀死SBT时,使用该脚本启动的后台进程也会被终止。

谢谢

2 个答案:

答案 0 :(得分:0)

尝试将此添加到您的sbt文件中:

fork in run := true

答案 1 :(得分:0)

我找到了解决方案。问题是,当我杀死SBT时,我向所有进程发送了SIGINT信号。为了避免创建的进程不被杀死,我需要将进程放在一个不同的进程组中,该进程组完成了setsid命令。