/etc/init.d에 Jar 파일을 실행하는 Linux (AWS Linux) 시작 서비스를 만들고 있습니다. 이것은 기본적으로 Spring 부트를 사용하는 maven 프로젝트입니다. 나는 처음에는 sudo -E ./mvnw clean 패키지를 실행하여 Jar 파일을 생성 한 다음 Jar 파일을 서비스로 영원히 실행하는 서비스를 시작한다. 이 Jar 파일은 데몬 서비스로 실행됩니다. 그러나 환경 변수 중 어느 것도 서비스에서 선택되지 않고 실제로 이러한 변수에 대해 null이 표시됩니다. ~/.profile에 환경 변수를 설정하고 나중에 ~/.profile을 실행합니다. 프로젝트 경로에서 Java -jar osuserver.jar을 직접 실행하면 모든 환경 변수가 선택되는 것을 볼 수 있지만 서비스와 동일하게 실행하면 픽업 환경 변수를 사용할 수 없습니다.Linux 서비스에서 환경 변수가 선택되지 않음
시퀀스 : ~/.profile -> run source ~/.profile -> 먼저 maven 패키지를 실행하여 Jar 파일을 생성합니다. - sudo -E ./mvnw 클린 패키지 -> 나중에 나는 서비스를 시작할 것이다 (sudo 서비스 Osuserver start).
나는 심지어 Sudo -E 서비스 osuserver 시작을 시도했지만 도움이되지 않았고 여전히 환경 변수에 null 값이 있습니다. 여기
그래서 기본적으로 응용 프로그램이 제대로 서비스하지만 유일한 문제로 실행#!/bin/sh
# chkconfig: 35 99 10
SERVICE_NAME=osuserver
PATH_TO_JAR=/home/ec2-user/osuserver/target/osu-server-0.1.0.jar
PID_PATH_NAME=/tmp/osuserver-pid
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
touch /var/lock/subsys/osuserver
else
echo "$SERVICE_NAME is already running ..."
touch /var/lock/subsys/osuserver
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
rm -f /var/lock/subsys/osuserver
else
echo "$SERVICE_NAME is not running ..."
rm -f /var/lock/subsys/osuserver
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 ..."
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac
가 데리러 함께 내가있는 init.d에 저장하고 내 OSU 시작 스크립트의 구문입니다 환경 변수. 환경 변수를 서비스에서 직접 설정해야합니까? 내가 어디로 잘못 가고 있는지 확실하지 않습니다. 내 게시물 < < < < < < < < 편집
---- >>>>>> ---
나는이 /etc/profile.d에서 osuscript.sh 생성하는 스크립트를 작성하는 환경 변수의 모든 수출을 가지고 있지만 여전히 동일한 문제에 직면 해있다. 그러나 프로젝트 경로에서 직접 Java -jar osuserver.jar을 실행하면 동일하게 작동합니다.
init.d가 시작한 스크립트는 대화 형 쉘로 실행되지 않으므로 프로필을 제공하지 않습니다. –
프로파일을 수동으로 소싱 중이지만 데몬 서비스가 프로파일을 선택하지 않습니다. –