Linux의 백그라운드에서 Jar 실행

Linux의 백그라운드에서 Jar 실행

나는 영원히 실행되는 항아리(소켓 청취 스레드가 있는 무한 루프)를 가지고 있으며 항상 백그라운드에서 실행되어야 합니다. 예는 다음과 같습니다: "java -jar test.jar" 어떻게 해야 합니까? 미리 감사드립니다!

답변1

몇 가지 방법들:

  1. &맨 뒤에 추가 . 그러나 이를 사용하면 프로그램을 시작한 터미널을 닫으면 프로그램이 종료됩니다.

  2. 세션 을 시작 screen하고 그 안에서 프로그램을 시작합니다. screen세션을 분리하고 터미널을 닫을 수 있습니다. 나중에 세션에 다시 연결하면 마치 콘솔에 있었던 것처럼 다시 콘솔로 돌아갈 수 있습니다. 그러나 프로그램을 실행하기 전에 스크린 세션을 시작해야 하며, 이를 잊은 경우에는 아무것도 할 수 없습니다.

  3. disown쉘에서 작업 제어를 사용하십시오 . 이렇게 하면 tty에서 작업이 분리되고 tty가 닫혀도 프로그램이 종료되지 않습니다. 하지만, 단절된 직업을 다시 붙일 수 있는 방법은 없다고 생각합니다.

답변2

로그오프 후에도 지속되기 위해 오랫동안 사용했던 명령줄 프롬프트는 "nohup"이므로 귀하의 경우에는 다음과 같습니다.

nohup java -jar test.jar &

&는 다른 쉘을 실행할 수 있도록 중요합니다. 나는 이것이 재부팅을 통해 지속되지 않을 것이라고 믿습니다.

답변3

"항상"이란 머신이 부팅할 때 시작된다는 의미라면 부팅 시 스크립트의 일부로 시작해야 합니다. 이를 수행하는 더러운 방법은 다음을 추가하는 것입니다.

java -jar test.jar >/dev/null 2>&1 &

/etc/rc.local(또는 즐겨찾는 로그 파일 로 교체 /dev/null)

적절한 실행 수준에서 시작되는 스크립트를 만드는 것이 더 좋습니다 init.d(예를 들어 실행 수준 0, 1 또는 6에서는 원하지 않을 수 있음). 이렇게 하면 프로그램이 종료되면 자동으로 다시 시작하고 일시적으로 중지할 수 있는 더 좋은 인터페이스를 가질 수도 있습니다.

작은 예http://www.howtoforge.com/forums/archive/index.php/t-3628.html

큰 설명http://developer.novell.com/wiki/index.php/Writing_Init_Scripts

답변4

명령줄 끝에 '&' 기호를 추가하면 Linux에서 백그라운드에서 모든 작업을 실행할 수 있습니다.

java -jar test.jar &

관련 정보