此语句的 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"