Java 프로세스가 여전히 종료되었습니다.

Java 프로세스가 여전히 종료되었습니다.

대학 서버에서 Java 프로그램을 실행해야 합니다. SSH를 통해 서버를 통해 원격으로 로그인했습니다.

그래서 나는 다음과 같이 nohup을 사용합니다.

nohup java -jar project.jar &

그러나 로그아웃하고 터미널을 닫았다가 다시 서버에 로그인하면 프로세스가 손실/종료됩니다.

답변1

nohupSIGHUP프로그램을 면역화 하고 신호를 보내십시오 SIGQUIT. 최신 셸은 세션에서 로그아웃할 때 다른 신호를 보낼 수 있으므로 nohup.

더 나은 해결책은 tmux또는 을 사용하는 것입니다 screen. 또는 를 사용하는 경우 bash다음을 시도해 볼 수 있습니다.

$ java -jar project.jar &
$ disown

답변2

(만성 기능 장애)에 대한 대안 nohup:

setsid java -jar project.jar </dev/zero &>/dev/null &

이는 프로세스를 효과적으로 "보호"합니다. 이제 init가 소유하므로 HUP를 얻지 못하고 I/O 스트림이 안전하며 백그라운드로 분기되었습니다.

자세한 내용은 을 참조하세요 man setsid. screen또는 와 달리 tmux소유권을 주장하고 계속 실행되는 프로그램이 아닙니다. 단지 자체 프로그램이 시작될 뿐입니다.프로세스 그룹.

답변3

또 다른 아이디어는 screen 명령을 사용하는 것입니다. 화면 내에서 프로그램을 시작하고, 분리하고, 로그아웃할 수 있습니다. 그런 다음 로그인하여 실행 화면 세션에 연결할 수 있습니다.

지도 시간:http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

답변4

STDOUT 및 STDERR을 null로 리디렉션하여 nohup을 실행해 보세요.

nohup java -jar project.jar 2>&1 &

관련 정보