PID-файл для этого оператора создается, но всегда пуст. При запуске оболочки с параметром -x я вижу, что $! пусто, но в конце задание java остается работающим в фоновом режиме по желанию. Почему отсутствует pid?
su - $USER -c "nohup java $rest_api_opts -jar $app_home/$app_name \
> /dev/null 2>&1& echo $! > $PID"
Исправлена. Проблема в том, что $! расширяется слишком рано. Так что побег задержал расширение
su - $USER -c "nohup java $rest_api_opts -jar $app_home/$app_name \
> /dev/null 2>&1& echo \$! > $PID"