Javaアプリケーションを起動するスクリプトがあります。
Next ファイル名 start.sh
#!/bin/bash
java -jar ./app.jar --spring.profiles.active=dev > startup.log &
echo $! > ./app.pid
そしてそれはライセンスがあります
-rwxrwxr-x 1 root root 41 Oct 22 20:58 shutdown.sh
-rwxrwxr-x 1 root root 144 Oct 22 20:58 startup.sh
マイコンピュータで同じスクリプトを実行すると、次のことが実行されます。
しかし、別のコンピュータで実行した場合(Jenkinsタスク)
ssh [email protected] '/opt/app/startup.sh'
実行していないか、jarが起動していません。
アップデート1
はい、他のコマンドが実行中です。
ssh [email protected] 'cd /home; ls -la'
total 8
drwxr-xr-x 2 root root 4096 Jun 27 2017 .
drwxr-xr-x 22 root root 4096 May 2 12:06 ..
アップデート2 PATHとJAVA_HOMEの設定
# echo $JAVA_HOME
/usr/java/jdk1.8.0_181-amd64
# echo $PATH
/usr/java/jdk1.8.0_181-amd64/bin:/usr/java/jdk1.8.0_181-amd64/bin:/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
答え1
ssh [email protected] '/opt/app/startup.sh'
...
#!/bin/bash
java -jar ./app.jar --spring.profiles.active=dev > startup.log &
echo $! > ./app.pid
この方法で実行すると、startup.sh
プロセスの作業ディレクトリ(リモートシステムにあります)がrootユーザーのホームディレクトリになります。ディレクトリは、「/」または「/root」、または同様のものにすることができます。スクリプトにはコマンドが含まれていないため、cd
ルートのホームディレクトリにある、およびapp.jar
にアクセスしようとしますstartup.log
。app.pid
指定されたファイルがルートのホームディレクトリに存在しない可能性があるため、app.jar
javaコマンドは何もできません。
これらすべてのファイルにアクセスするには、リモート/opt/app
システムの対応するディレクトリに変更する必要があります。
ssh [email protected] 'cd /opt/app && /opt/app/startup.sh'
あるいは、スクリプト内で正しいディレクトリに変更することもできます。
#!/bin/bash
cd /opt/app || exit 1
java -jar ./app.jar --spring.profiles.active=dev > startup.log &
echo $! > ./app.pid