Linux 시스템의 백그라운드에서 Java 배치 애플리케이션(.jar 애플리케이션)을 올바르게 실행하려면 어떻게 해야 합니까?

Linux 시스템의 백그라운드에서 Java 배치 애플리케이션(.jar 애플리케이션)을 올바르게 실행하려면 어떻게 해야 합니까?

저는 시스템 엔지니어가 아닙니다(소프트웨어 개발자입니다). Java 애플리케이션(실행 가능한 애플리케이션)을 실행해야 합니다..항아리파일)을 Linux 시스템(Centos 7)에 저장합니다. SSH를 통해 쉘에 연결하고 있습니다. 이 응용 프로그램은항아리배치 애플리케이션을 포맷하고 구현하며 자체적으로 스케줄러를 포함합니다.

셸을 종료한 후에도 계속 실행되도록 하려면 원격 서버의 백그라운드에서 실행해야 합니다.

백그라운드에서 애플리케이션을 실행하기 위해 이 명령을 수행했습니다.

java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar &

그런 다음 클릭했습니다.Ctrl+C내 쉘에서 키보드 프롬프트를 다시 얻으려면 내 키보드에서.

여기서 첫 번째 이상한 동작이 나타납니다. 쉘 프롬프트와 명령을 삽입할 수 있는 가능성을 다시 얻었지만 애플리케이션 로그에 무언가가 있으면 쉘에 나타납니다. 왜? 내 애플리케이션이 여전히 백그라운드에서 실행될 것으로 예상했습니다.

어쨌든 이제 내 애플리케이션이 실행 중인지 확인하기 위해 내 셸에서 다음 명령을 실행합니다.

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23307 15.3  1.6 4871172 418980 pts/0  Sl   10:23   0:22 java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar
webadmin 23522  0.0  0.0 112812   980 pts/0    S+   10:25   0:00 grep --color=auto java

그리고 네, 내 응용 프로그램이 올바르게 실행되는 것 같습니다(첫 번째 응용 프로그램).

그런 다음 셸에 대한 연결을 닫고 다시 로그인하여 이전 명령을 다시 수행했지만 이제 다음을 얻습니다.

[email protected] [~/zzz-import-data-batch]# ps aux | grep java
xxx 23919  0.0  0.0 112812   980 pts/0    S+   10:27   0:00 grep --color=auto java

그 후에 볼 수 있듯이 쉘에서 연결을 끊었습니다. 새로 로그인할 때 배치 애플리케이션이 실행되지 않는 것처럼 보입니다(사실 내 작업 애플리케이션도 실행되지 않습니다).

뭐가 잘못 되었 니? 내가 무엇을 놓치고 있나요? Java jar 배치 애플리케이션을 백그라운드에서 실행하는 좋은 방법은 무엇입니까?

답변1

셸이 종료되기 전에 셸에서 백그라운드 작업의 연결을 해제해야 합니다.

를 입력하면 command &시스템에서 "[1] 25177"과 같은 작업 ID를 제공합니다. 여기서 1작업 ID는 다음과 같습니다.

이제 다음을 사용해야 합니다. 부인 명령. 위의 예에서는 다음과 같습니다.

disown 1

또는 모든 작업을 수행합니다(한 가지 작업만 수행하므로).

disown

자세한 내용은 예를 참조하세요. Linux/Unix: disown 명령.

관련 정보