Putty를 종료하면 Linux Minecraft 서버가 종료됩니까?

Putty를 종료하면 Linux Minecraft 서버가 종료됩니까?

최근에 마인크래프트 서버를 운영하기 시작했습니다.

콘솔이나 퍼티를 종료한 후 프로세스를 종료하지 않는 방법을 모르겠습니다.

명령은 다음과 같습니다:

Java -jar minecraft_server.1.10.2.jar

하지만 가끔은:

Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

답변1

PuTTY를 닫으면 컴퓨터에 끊김 신호가 전송되며, 이는 Minecraft를 비롯한 다양한 프로그램에서 포착됩니다. 너할 수 있다nohupMinecraft의 표준 출력 및 표준 오류를 사용 하고 파일(또는 /dev/null)로 리디렉션하지만 일부 사람들은 설치하고 컴퓨터에서 세션을 실행하는 것이 더 간단하다고 생각 screen합니다 tmux. 이렇게 하면 screen/tmux를 닫을 때 나중에 다시 돌아와서 메시지를 볼 수 있습니다.

나는 일반적으로 를 사용하는데 screen, 이는 에 비해 더 적은 수의 키 입력을 사용합니다 tmux.

  • 달리기screen
  • Enter를 눌러 쉘을 얻으십시오
  • 마인크래프트를 실행하다
  • controlAd분리하려면 (control/A 다음에 d)를 입력하세요 .
  • 퍼티 닫기

이는 일부 화면 기본 구성을 생각나게 합니다.아직터미널을 닫을 때 세션을 닫습니다. 이것이 문제라면 세부 사항을 추가할 수 있습니까?

답변2

저는 Raspberry Pi에서 Terraria 서버를 실행하고 있었는데 같은 문제가 발생했습니다.

나를위한 해결책은screen

를 사용하여 설치한 sudo apt install screen다음 Minecraft 서버를 실행하십시오. 단, screen그 전에 실행하십시오.

명령은 다음과 같습니다: screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

답변3

질문하신 내용이 100% 확실하지는 않지만 어쨌든 답변해 드리겠습니다 :) SSH 터미널 에뮬레이터(예: 퍼티)를 사용하여 원격 시스템에 연결하고 "포그라운드 프로세스"(예: Keep)를 실행하는 경우 백그라운드에서 실행되는 데몬 대신 해당 터미널에서 열립니다) SSH 세션에서 연결을 끊으면 종료됩니다. 백그라운드 프로세스(예: 데몬)를 실행하면 원격 세션이 종료된 후에도 계속 실행됩니다. (프로세스를 시작한 명령 끝에 &를 추가하여 대부분의 포그라운드 프로세스를 "데몬화"할 수 있습니다.) 다른 세션에서 해당 프로세스를 종료하려면 해당 PID 번호( ps aux | grep 'name_of_process'예를 들어 최상위 프로세스를 사용하여 얻음) 를 알아야 합니다. 또는 htop 유틸리티를 사용하거나 killall name명령을 실행하는 등 다양한 방법을 사용할 수 있습니다.) 반면에 세션 간에 포그라운드 프로세스를 활성 상태로 유지하려면 또는 터미널 멀티플렉서 와 screen​​같은 것을 사용해야 합니다. 연결이 끊어지면 백그라운드로 분리되었다가 다음에 로그인할 때 실행 중인 모든 프로세스가 그대로 유지되어 다시 연결될 수 있습니다. (물론 그들이 죽거나 살해당하면 그들에 관한 모든 것도 죽습니다).tmuxbyobu

명령은 Java -jarminecraft_server.1.10.2.jar이지만 때로는 Java -Xmx1024M -Xms1024M -jarminecraft_server.1.10.2.jar입니다.

백그라운드에서 멈춰 있으면 다음에 다음 명령 중 하나를 통해 로그인할 때 이를 종료할 수 있습니다 kill( killall java이렇게 하면 실행 중인 모든 Java 프로세스가 종료됩니다!). 또는 ps aux |grep minecraft"minecraft"라는 단어가 포함된 모든 프로세스가 종료됩니다( 아마도 ps aux | grepminecraft를 포함하여) 사용자 이름 옆의 숫자는 PID입니다. 그런 다음 kill PID(PID는 이전 명령의 숫자입니다...) 문제가 해결됩니다. 다시 실행하여 확인하십시오 ps aux |grep minecraft. (아직 실행 중이라면 kill -9 PID다음 단계를 시도해 보세요.)

답변4

이는 SSH 세션을 닫을 때 SSH 서버가 실행 중이던 모든 프로세스를 종료하기 때문에 발생합니다.

지금까지 여기에 제공된 솔루션은 screen기본적으로 터미널 세션에서 연결을 끊고 로그아웃한 다음 나중에 다시 연결하여 모든 프로세스를 계속 실행하는 방법을 사용하는 방법에 대해 설명합니다.

그러나 이 솔루션은 서버 프로세스가 충돌하거나 서버가 다시 시작되거나 기타 이상한 일이 발생하는 경우를 고려하지 않습니다.

이렇게 하려면 서버에 대한 시스템 서비스 생성을 살펴보는 것이 좋습니다. 이와 같은 정의 방법은 시스템마다 다르지만 일반적인 원칙은 종속성이 시작되면 서버가 서비스를 자동으로 시작하고 서비스가 종료되면 다시 시작할 수 있는 옵션이 있다는 것입니다. 표준 출력에 기록하는 대신 출력을 로그 파일에 저장하도록 많은 프로그램에 요청할 수도 있습니다.

systemctl터미널에 해당 명령이 있다면 아마도 systemd가 설치되어 있을 것입니다 .이것은 튜토리얼입니다시스템 기반 시스템용 Minecraft 서비스 파일 설정에 대해 알아냈습니다.

그렇지 않다면 systemctl아마도 OpenRC 기반 또는 upstart 기반 시스템을 사용하고 있을 것입니다. 이러한 경우 기존 서비스를 조사 /etc/init.d하고 이를 기반으로 자체 서비스를 만들어야 합니다.(이 주제에 대한 좋은 튜토리얼을 아는 사람이 있다면 편집해 주세요!)

관련 정보