【发布时间】:2018-10-09 12:47:19
【问题描述】:
我正在从 Kotlin 启动一个 bash 脚本,但是一旦 Kotlin 应用程序退出,bash 脚本就会停止运行。
val pr = ProcessBuilder("/home/vlad/liq", script, input).start()
其中 script 是一个 Liquidsoap 脚本,而 input 是传递给脚本的参数
通常,它会运行如下内容:
./liq blah.liq http://somedomain.com:8090
liq 然后执行作为第一个参数的liquidsoap 脚本,然后将第二个参数用作liquidsoap 脚本的参数。
#!/bin/bash
nohup /usr/bin/liquidsoap $1 -- $2 > /dev/null 2>&1 &
# this causes syntax error
# nohup (/usr/bin/liquidsoap $1 -- $2 > /dev/null 2>&1 &)
这个 Kotlin 应用程序通过java -jar dashboard.jar 运行,当应用程序运行时,liquidsoap 脚本正在运行,只要我使用 Ctrl + C 退出 Kotlin 应用程序,liquidsoap 脚本也会停止。
我的印象是nohup + & 会产生一个新的控制台,从而即使在 Kotlin 应用程序退出后也能保持脚本运行,但事实并非如此。
关于如何在我的 Kotlin 应用程序退出后保持脚本运行的任何想法?
【问题讨论】:
-
你可以尝试使用双叉在命令周围加上括号和 apersand
(/usr/bin/liquidsoap $1 -- $2 > /dev/null 2>&1 &) -
这会导致在意外标记
/usr/bin/liquidsoap'附近出现语法错误,我也尝试将& 符号移出括号,仍然显示语法错误。 -
抱歉,如果没有
nohup就不够清楚 -
基本上,这是整个脚本:
/usr/bin/liquidsoap $1 -- $2其中 $1 是 .liq 脚本,$2 是 URL