SSH가 아닌 로컬 세션에서 로그아웃한 후 프로세스를 활성 상태로 유지

SSH가 아닌 로컬 세션에서 로그아웃한 후 프로세스를 활성 상태로 유지

컴퓨터에서 로그아웃한 후에도 서버 프로세스를 계속 실행할 수 있습니까?

일반적으로 나는 screen, tmux또는 를 사용하는데 nohup, 모두 ssh를 사용하지 않고 로컬에서 컴퓨터를 사용할 때 작동합니다. (Gnome Desktop도 실행 중입니다.)

그렇다면 컴퓨터에 로컬로 로그인했을 때 서버 프로세스를 시작할 수 있는 방법이 있습니까?

답변1

systemd 230부터 KillUserProcesses기본적으로 활성화되어 있습니다.

https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338

예를 들어 이 동작을 전체적으로 비활성화하도록 /etc/systemd/logind.conf설정하거나 이 동작에서 사용자 이름을 제외하도록 설정하여 이를 편집하여 변경할 수 있습니다 .KillUserProcesses=noKillExcludeUsers=<your-username>

또는 를 사용하여 서버 프로세스를 시작하여 임시적으로 이 문제를 해결할 수 있습니다 systemd-run --scope --user <executable>. 이에 대한 자세한 내용은 Example 5. Start screen as a user service하단에서 확인할 수 있습니다 .시스템 실행(1).

답변2

저는 Debian Stretch를 실행하고 있으며 KillUserProcesses시스템에서 기본적으로 비활성화되어 있지만 screen로그아웃 후에는 유지되지 않습니다. 몇 가지 실험을 거친 후 다음은 로컬에서 로그아웃한 후에도 screen 세션이 계속 실행되는 것으로 보입니다.

screen -m

아니면 바로 분리하고 싶다면

screen -m -d

왜 이런 일이 발생하는지 잘 모르겠지만 나에게는 효과가 있는 것 같습니다.

편집하다:

좀 더 테스트해 보니 명령을 사용하여 실행 중인 화면이 유지되지 않는 것 같습니다. 저는 4개의 세션을 시작했고 필요한 경우 세션을 분리했습니다.

로그아웃 전:

user    31365     1  0 16:20 ?        00:00:00 SCREEN -S mdc -m -d vim
user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31391     1  0 16:20 ?        00:00:00 SCREEN -S mc -m vim
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

로그아웃했다가 다시 로그인한 후:

user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

명령으로 시작된 두 인스턴스가 로그아웃 중에 종료된 것 같습니다. 남은 2개의 세션을 연결하고 VIM을 시작한 뒤, 분리하고 다시 로그아웃했습니다. 다시 로그인한 후에도 세션은 계속 실행 중이었고 VIM은 각 세션에서 계속 실행 중이었습니다.

관련 정보