在我的应用程序的启动脚本中,该服务使用以下几行启动:
JVM_OPTS=$DEFAULT_JVM_OPTS" "$JAVA_OPTS" "$${optsEnvironmentVar}" -Dapp.pid=$$ -Dapp.home=$APP_HOME -Dbasedir=$APP_HOME"
exec nohup "$JAVACMD" -jar $JVM_OPTS <% if ( appNameSystemProperty ) { %>\"-D${appNameSystemProperty}=$APP_BASE_NAME\" <% } %> $CLASSPATH server /resources/config.yml > /home/testUser/stdout.out 2> /home/testUser/stderr.err &
应用程序启动良好,但在代码审查中,我们注意到 -Dapp.pid 的值不正确,通过检查它ps -aux | grep appName
并将其与该命令的 PID 以及 输出的 PID 进行比较pgrep -f appName
。我想知道是否有任何方法可以为参数分配正确的 PID。到目前为止,我已经尝试将其设置为:
-Dapp.pid=`preg -f appName`
但这最终导致 -Dapp.pid 为空白,我认为这是由于它在 exec 完全运行之前调用了该命令。有没有其他人遇到过这个?