2010-07-21 4 views
4

아무도이 문제를 일으키지 않는 것처럼 보이는이 바보 같은 질문 일 것입니다. Jetty 설명서에 jar -jar start.jar이 Jetty를 시작한다고 나와 있습니다. 하지만 SSH 콘솔을 닫을 때 분명히 죽습니다.방파제를 올바르게 시작하는 방법

어떻게 실행합니까?

+0

* 적절한 답을 모르지만 괜찮은 해결 방법은 [screen] (http://www.gnu.org/software/screen/) 세션에서 실행하는 것입니다. –

+0

첫 번째 단계는 "적절하게" –

+0

Sory를 정의하는 것입니다. 백그라운드에서 실행하는 방법을 묻는 것이 좋습니다. 적절하게 나는 대부분의 사람들이 그것을하는 방법을 의미했다. –

답변

1

한 가지 방법은이 screen

+0

nohup/screen을 사용하면 어떻게 중지합니까? –

+0

@Matt, nohup을 사용하면'kill '으로 프로세스를 종료 할 수 있습니다. 화면을 사용하여 화면 세션에 다시 연결하고 일반적인 방법 (ctrl-c 또는 유사한)으로 중지하십시오. –

+3

끝에 "&"를 추가하여 백그라운드에서 실행하십시오.'nohup java -jar start.jar &' – Saurabh

3
java -jar start.jar & 

(실행하는 데 사용하는 것 파일에

또 다른 방법을 표준 출력 및 표준 오류를 작성하는 장점이있다 nohup

nohup java -jar start.jar 

사용하는 것입니다 백그라운드에서) 로깅이 w/nohup만큼 멋지게 변환되지는 않지만 작동해야합니다.

가 백그라운드 프로세스가 아니라면으로 프로세스를 종료합니다 (예를 들어, 로그 아웃에 의해) 프로세스를 시작 쉘을 죽이고 있기 때문입니다. 화면은 백그라운드에서 실행되기 때문에 이후에도 작동하며 화면은 연결/분리하는 동안 세션을 효과적으로 유지합니다.

만약 당신이 * nix 시스템에 경우
1

, 가장 좋은 방법은 /etc/init.d에서 스크립트를 사용 할 수있다 (또는 시스템의 상응하는 무엇이든). https://gist.github.com/404672에 하나 있습니다.

그렇지 않으면 명령 줄에서 nohup 또는 screen을 사용하면 로그 아웃 할 때 최소한 프로세스가 종료됩니다. 따라서 &을 사용하여 백그라운드에서 프로세스를 진행합니다.

13

이 실제로 부두에서 실행되는 응용 프로그램을 제공하는 생산 시스템에서 실행하기위한인가? 이것이 사실이라고 가정합니다. 시작하는 것에 대해 묻기 때문에 입니다.

그렇다면, 당신은 적절한 프로세스 감시 시스템이 필요 같은 runit, daemontools, monit, upstart, systemd, 또는 좋은 똑똑한 'SysV init.d (a gist/w를 언급 한 바와 같이). 어떤 것을 사용할지는 환경 설정, 비즈니스 요구 사항 및 기본 운영 체제에 따라 다릅니다.

내가 사용하고 runit을 선호합니다. 그것은 solid principles (daemontools)을 기반으로하며, 선호 배포판 (Debian 및 Ubuntu)은 저자가 직접 nicelypackaged입니다.

다른 답변에서 권장되고 주석에서 언급되었지만 screen/tmux에서 장시간 실행되는 프로세스를 시작하거나 nohup을 통해 시작하는 것이 최적이 아닙니다. 프로세스에 대한 실질적인 제어권이 없습니다. 죽으면 다시 시작되지 않습니다. PID를 수동으로 찾아야하고 그렇지 않으면 서비스를 수동으로 관리해야합니다. 로그 출력 (리디렉션, 임의의 파일 전송 등)을 수행하려면 더 많은 수작업을해야합니다. 당신은 안정적으로 다른 프로세스에 의존하게 만들 수 없으며 다른 프로세스가 의존하게 만들 수도 없습니다. 괜찮은 프로세스 감독 시스템은 기본적으로이 모든 기능을 제공합니다.

목표가 완전히 다른 경우, 유스 케이스에 대한보다 구체적인 질문을 업데이트하십시오.