run.sh 改用 python subprocess.Popen(start_new_session=True) 启动:nohup 方式会让编辑器挂在启动它的会话下,会话结束就被收掉
This commit is contained in:
1 parent
1333e3d89c
commit
8fefcb76c4
1 file changed
+19
-10
+19
-10
@@ -26,16 +26,25 @@ if [[ ! -f "$HERE/build/classes/com/spineview/Launcher.class" ]] \
|
||||
fi
|
||||
|
||||
echo "== 启动(工程 $PROJ)"
|
||||
nohup "$JX" \
|
||||
"-javaagent:$ROOT/tools/agent/view-agent.jar" \
|
||||
-DSpineJava=1 \
|
||||
"-Dspine.payload=$PAY" \
|
||||
"-Dspine.resources=$HERE/resources" \
|
||||
"-Dspine.compat=$HERE/compat-classes" \
|
||||
"-Dspine.classes=$HERE/build/classes" \
|
||||
"-Duser.home=$ROOT/spine-lab/home" \
|
||||
-cp "$HERE/build/classes:$ASM" com.spineview.Launcher "$PROJ" \
|
||||
>"$LOG" 2>&1 &
|
||||
# 注意:不能用 `nohup … &` —— 那样进程挂在本 shell 的会话里,跑这条命令的终端一结束
|
||||
# 编辑器就被一起收掉。必须 start_new_session=True 让它彻底脱离会话。
|
||||
python3 - "$JX" "$ROOT" "$HERE" "$PAY" "$PROJ" "$LOG" <<'PYEOF'
|
||||
import subprocess, sys
|
||||
jx, root, here, pay, proj, log = sys.argv[1:7]
|
||||
cmd = [jx,
|
||||
"-javaagent:" + root + "/tools/agent/view-agent.jar",
|
||||
"-DSpineJava=1",
|
||||
"-Dspine.payload=" + pay,
|
||||
"-Dspine.resources=" + here + "/resources",
|
||||
"-Dspine.compat=" + here + "/compat-classes",
|
||||
"-Dspine.classes=" + here + "/build/classes",
|
||||
"-Duser.home=" + root + "/spine-lab/home",
|
||||
"-cp", here + "/build/classes:" + root + "/tools/asm/asm.jar:" + root + "/tools/asm/asm-tree.jar",
|
||||
"com.spineview.Launcher", proj]
|
||||
with open(log, "ab") as out:
|
||||
subprocess.Popen(cmd, stdout=out, stderr=out, start_new_session=True)
|
||||
print("launched")
|
||||
PYEOF
|
||||
|
||||
sleep 2
|
||||
echo "== 已启动:pid $(pgrep -f com.spineview.Launcher | tr '\n' ' ')"
|
||||
|
||||
Reference in new issue
Block a user