我在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时,使用该脚本启动的后台进程也会被终止。
谢谢
答案 0 :(得分:0)
尝试将此添加到您的sbt文件中:
fork in run := true
答案 1 :(得分:0)
我找到了解决方案。问题是,当我杀死SBT时,我向所有进程发送了SIGINT
信号。为了避免创建的进程不被杀死,我需要将进程放在一个不同的进程组中,该进程组完成了setsid
命令。