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


12

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

답변:


8

몇 가지 방법들:

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

  2. 시작 screen세션을하고, 내부 프로그램을 시작합니다; screen세션을 분리 하고 터미널을 닫을 수 있습니다 . 나중에 세션에 다시 연결하여 마치 마치 마치 마치 마치 콘솔에서 자신을 다시 발견 할 수 있습니다. 그러나 프로그램을 실행하기 전에 스크린 세션을 시작해야하며 잊어 버린 경우에는 아무 것도 할 수 없습니다.

  3. disown쉘에서 작업 제어를 사용하십시오 . 이렇게하면 tty에서 작업이 분리되고 tty가 닫히면 프로그램이 종료되지 않습니다. 그러나 실직 된 작업을 다시 첨부 할 방법이 없다고 생각합니다.


13

로그 오프를 통해 오래 지속되는 명령 줄 프롬프트는 "nohup"이므로 귀하의 경우

nohup java -jar test.jar &

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


7

"항상"이라고 말하면 컴퓨터가 부팅 될 때 시작되면 부팅 시간 스크립트의 일부로 시작해야합니다. 이 작업을 수행하는 더러운 방법은

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 에서 큰 설명


또 다른 가능성은 사용자 perms로만 실행하려면 cron에 넣고 '@reboot'를 실행 시간으로 사용하는 것입니다. 자세한 내용은 'man 5 crontab'을 참조하십시오.
pjz

3
java -jar test.jar &

& 연산자는 프로세스를 백그라운드에서 강제로 실행하고 나중에 'top'명령을 실행하여 프로세스가 실행 중인지 확인할 수 있습니다.


1

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

java -jar test.jar &


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.