현재 Google Cloud Compute에서 VM에 SSH로 연결하여 Java 앱을 실행하고 있습니다. 앱을 실행하라는 명령을 내리고 콘솔을로드합니다. SSH 연결을 종료하자마자 앱이 종료됩니다. 콘솔이 닫혀 있기 때문이라고 생각합니다.
SSH를 종료 한 후에도이 앱 (서버)이 유지되기를 원하며 언제든지 콘솔에 다시 연결하여 서버에서 명령을 실행할 수 있기를 원합니다.
답변
당신은 이것을 진술합니다 :
SSH를 종료 한 후에도이 앱 (서버)이 유지되기를 원하며 언제든지 콘솔에 다시 연결하여 서버에서 명령을 실행할 수 있기를 원합니다.
목표가 약간 모호하지만, 나는 그것을 찌르겠습니다!
Linux 서버에서 백그라운드 프로세스로 명령을 실행하려면 명령 앞에 nohup
추가 &
하고 끝에 추가 해야합니다.
따라서 최종 명령은 다음과 같습니다.
nohup [your command] &
이는 nohup
명령이 “hang ups”를 무시해야하며 앰퍼샌드가 &
추가되면 시스템이 백그라운드 프로세스로 명령을 실행하도록 지시하는 쉘 명령입니다. 사용법에 대한 자세한 내용은 여기를 참조하십시오 .
이와 같은 명령을 실행하면 프로세스가 실행되고 명령 프롬프트로 돌아가서 터미널 세션을 종료하거나 해당 터미널 세션 중에 해당 명령과 관련이없는 다른 작업을 수행 할 수도 있습니다.
답변
이 작업을 수행하는 방법에는 적어도 세 가지가 있습니다 : nohup
( ‘no hang up’) screen
/ / tmux
또는 disown
. 서버에 연결하고 연결을 끊은 후 데몬과 상호 작용해야한다는 질문에 대해서는 분명하지 않습니다.
이 경우입니다, 경우 nohup
및 disown
이 과정을 떼면 (가 실행 계속하지만) 좋은 경기를하지 않습니다. tmux
(및 screen
)은 귀하가 언제라도 용어를 계속 운영합니다.
자세한 내용은 해당 페이지를 참조하십시오.
man nohup
man tux
Bash disown ( Bash를 실행한다고 가정하지만 다른 많은 쉘에는 비슷한 것이 포함되어 있음)
답변
실행중인 쉘에서 응용 프로그램을 분리하여 쉘이 종료 된 후에도 응용 프로그램을 지속 시키려면 nohup
명령을 사용하십시오 .
단순히 일반 명령을 접두사로 사용하면 정상적으로 nohup
작동합니다.
답변
또한 nohub이 작동하지 않으면 screen을 사용할 수 있습니다 .
ssh into your remote box.
type screen 그런 다음 원하는 프로세스를 시작하십시오.
Press Ctrl-A then Ctrl-D.
그러면 화면 세션이 분리되지만 프로세스는 계속 실행됩니다. 이제 원격 박스에서 로그 아웃 할 수 있습니다.
If you want to come back later, log on again and type screen -r This will resume your screen session, and you can see the output
의
당신의 과정.