无法从后台 Java 作业获取 PID

无法从后台 Java 作业获取 PID

此语句的 PID 文件已创建,但始终为空。使用 -x 运行 shell 时,我看到 $! 为空,但最后 java 作业仍按预期在后台运行。为什么缺少 pid?

 su - $USER -c "nohup java $rest_api_opts -jar $app_home/$app_name \
   > /dev/null 2>&1& echo $! > $PID"

答案1

已修复。问题在于 $! 扩展得太早了。因此将其转义会延迟扩展

su - $USER -c "nohup java $rest_api_opts -jar $app_home/$app_name \
   > /dev/null 2>&1& echo \$! > $PID"

相关内容