Jar服务中的日志文件创建问题

问题描述

我在RHEL 8上部署了spring boot应用程序。该应用程序在特定文件夹中创建日志文件,并根据logback.xml文件中的设置创建文件

我正在将应用程序部署为服务,并且看到使用以下配置未创建日志。下面的脚本文件是从引用该文件的systemd进程中调用的。

#!/bin/sh 
SERVICE_NAME=My_Service_Name 
PATH_TO_JAR=/usr/Name_of_User/MyJavaApplication.jar 
PID_PATH_NAME=/tmp/My_Service_Name-pid 
case $1 in 
start)
       echo "Starting $SERVICE_NAME ..."
  if [ ! -f $PID_PATH_NAME ]; then 
       java -jar $PATH_TO_JAR      
                   echo $! > $PID_PATH_NAME  
       echo "$SERVICE_NAME started ..."         
  else 
       echo "$SERVICE_NAME is already running ..."
  fi
;;
stop)
  if [ -f $PID_PATH_NAME ]; then
         PID=$(cat $PID_PATH_NAME);
         echo "$SERVICE_NAME stoping ..." 
         kill $PID;         
         echo "$SERVICE_NAME stopped ..." 
         rm $PID_PATH_NAME       
  else          
         echo "$SERVICE_NAME is not running ..."   
  fi    
;;    
restart)  
  if [ -f $PID_PATH_NAME ]; then 
      PID=$(cat $PID_PATH_NAME);    
      echo "$SERVICE_NAME stopping ..."; 
      kill $PID;           
      echo "$SERVICE_NAME stopped ...";  
      rm $PID_PATH_NAME     
      echo "$SERVICE_NAME starting ..."  
      java -jar $PATH_TO_JAR             
      echo $! > $PID_PATH_NAME  
      echo "$SERVICE_NAME started ..."    
  else           
      echo "$SERVICE_NAME is not running ..."    
     fi     ;;
 esac

在abovue脚本中,我什至尝试替换

java -jar $PATH_TO_JAR

使用

 nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >>/dev/null &

但没有运气。

如果我不使用此脚本并像java -jar MyApplication.jar这样从终端运行应用程序,则日志文件确实会在所需位置创建。

解决方法

nohup java -jar $PATH_TO_JAR </dev/null >/dev/null 2>&1 &

有关更多信息,请参见下面

How do I use the nohup command without getting nohup.out?