Java 애플리케이션을 시작하는 스크립트가 있습니다.
다음 파일 이름 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" 또는 이와 유사한 것일 수 있습니다. 스크립트에는 명령이 포함되어 있지 않으므로 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