대학 서버에서 Java 프로그램을 실행해야 합니다. SSH를 통해 서버를 통해 원격으로 로그인했습니다.
그래서 나는 다음과 같이 nohup을 사용합니다.
nohup java -jar project.jar &
그러나 로그아웃하고 터미널을 닫았다가 다시 서버에 로그인하면 프로세스가 손실/종료됩니다.
답변1
nohup
SIGHUP
프로그램을 면역화 하고 신호를 보내십시오 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 &