[当我尝试从TeamCity的Custom Script
Step Runner启动后台进程时,我看到它会在步骤完成后立即终止后台进程。有没有办法让后台进程继续运行?
这是我正在尝试的步骤:
ORACLE_POD_NAME=`...complex logic here...`
oc port-forward $ORACLE_POD_NAME 15210:1521 &
PORT_FORWARD_PID=$!
echo $PORT_FORWARD_PID > port_forward.pid
想法是在构建期间创建一个指向我的OpenShift pod的持久端口,很多后续的构建步骤都需要它。然后,我将使用写入文件的PID终止端口转发过程。
很遗憾,oc port-forward
在步骤结束后立即终止。有没有办法使它工作?
解决方案是从父进程中断开我正在启动的后台子进程的输入和输出,并告诉子进程不要响应HUP (hangup)
信号。
nohup oc port-forward $ORACLE_POD_NAME 15210:1521 > /dev/null 2>&1 </dev/null &
PORT_FORWARD_PID=$!
这可确保端口转发过程在TeamCity步骤终止后仍然有效,从而使端口转发可用于后续的构建步骤。