我有一个具有3个用户(root,cfruntime,cfdev)的Solaris系统
在成功安装ColdFusion 2018之后,Coldfusion2018安装的所有者是cfruntime。
作为cfdev,我尝试使用以下命令启动ColdFusion
sudo / disktwo / coldfusion2018 / cfusion / bin / coldfusion start
这似乎不能正常启动冷融合,但是也不会产生任何异常错误/日志
查看启动脚本/ disktwo / coldfusion2018 / cfusion / bin / coldfusion。以下各行实际上启动了ColdFusion
CFSTART='su $RUNTIME_USER -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH;
export LD_LIBRARY_PATH;
cd $CF_DIR/bin;
$JAVA_EXECUTABLE -classpath $CLASSPATH $JVM_ARGS
com.adobe.coldfusion.bootstrap.Bootstrap -start &"'
eval $CFSTART > /dev/null
我所做的一个有趣的观察是,如果我在&
的末尾删除了CFSTART
,ColdFusion将正常启动(尽管我需要将其放在后台crtl-z , bg
中)
如果以(cfdev / cfruntime)身份启动,则退出启动脚本后,ColdFusion进程似乎并不持久,但是如果该脚本以root身份运行,则ColdFusion进程可以正常启动。
有什么想法吗?
答案 0 :(得分:1)
在nohup
命令之前添加$JAVA_EXECUTABLE
并将输出发送到>/dev/null 2>&1
对我来说很有用
CFSTART='su $RUNTIME_USER -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH;
export LD_LIBRARY_PATH;
cd $CF_DIR/bin;
nohup $JAVA_EXECUTABLE -classpath $CLASSPATH $JVM_ARGS
com.adobe.coldfusion.bootstrap.Bootstrap -start > /dev/null 2>&1 &"'
我发现,似乎切换到运行时用户su $RUNTIME_USER
并在后台启动进程会导致启动脚本完成后,外壳程序启动的所有作业都关闭(向所有用户发送挂断信号(SIGHUP)由该终端启动的作业)。
nohup
阻止$JAVA_EXECUTABLE
在收到挂断信号(SIGHUP)时关闭