Linux(AWS Linux)スタートアップサービスを作成して、/ etc/init.dにJarファイルを実行しています。基本的にSpringブートを使用したmavenプロジェクトです。私は最初にsudo -E ./mvnw cleanパッケージを実行してJarファイルを生成し、Jarファイルを永久にサービスとして実行するサービスを開始します。このJARファイルはデーモンサービスとして実行されます。しかし、環境変数のどれもがサービスから選択されておらず、実際にはこれらの変数に対してnullが返されています。 〜/ .profileに環境変数を設定していて、後でsource〜/ .profileを実行します。プロジェクトパスでJava-jar osuserver.jarを直接実行すると、すべての環境変数が選択されているのがわかりますが、サービスと同じように実行すると、環境変数を取得できません。Linuxサービスで環境変数が取得されない
シーケンス:最初に〜/ .profile - > run source〜/ .profile - > mavenパッケージを実行してJarファイルを作成します - sudo -E ./mvnw clean package - > later私はサービスを開始します(sudoサービスOsuserver start)。
私はSudo -Eサービスのosuserverを起動しようとしましたが、それは助けにはならなかったし、環境変数にはまだ値が残っていました。
は、ここで私はinit.dディレクトリに
#!/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
を保存しています私のOSUの起動スクリプトの構文は、だから、基本的にアプリケーションがサービスで正常に実行されているが、唯一の問題は、ピックアップであります環境変数を設定する必要がありますか?サービスから直接環境変数を設定する必要がありますか?私はどこに間違っているのか分からない。
---- >>>>>> < < < < < < < <私のポストを編集---
私はを/etc/profile.d下osuscript.shを作成するスクリプトを書きました環境変数のすべての輸出を持っていますが、それでも同じ問題に直面しています。しかし、プロジェクトパスでJava-jar osuserver.jarを直接実行すると、同じことが行われます
init.dで起動されたスクリプトは、対話シェルとして実行されないため、プロファイルのソースはありません。 –
私はプロファイルを手動で調達していますが、デーモンサービスはそれを選択していません。 –