SSH 로그아웃 시 Tmux 세션이 종료되었습니다.

SSH 로그아웃 시 Tmux 세션이 종료되었습니다.

SSH를 통해 액세스되는 원격 시스템에서 tmux를 사용하고 있습니다. 어떤 이유로 연속 SSH 로그인 세션 간에 tmux 세션이 지속되지 않습니다. 액세스 권한이 있는 다른 원격 컴퓨터에 로그인할 때 이 문제가 발생하지 않습니다. 이는 본질적으로 이 기사에서 설명한 것과 동일한 문제입니다.질문.

그러나 내가 사용하고 있는 기계가 이미 ssh.service대신 사용되고 ssh.socket있으므로 허용된 답변이 나에게 적합하지 않습니다.

구체적인 조치:

  1. SSH를 통해 머신에 로그인
  2. tmux 세션을 시작하고 몇 가지 작업을 수행합니다.
  3. 세션을 분리하고 다시 연결할 수도 있습니다(작동합니다).
  4. 로그아웃하려면 Ctrl+D를 사용하세요.
  5. 다시 로그인하고 tmux a 또는 tmux ls를 시도하십시오(작동하지 않음).

답변1

약간의 조사 끝에 내 문제에 대한 해결책을 찾았습니다.

tmux 세션을 종료하는 이유는 KillUserProcesses=yes의 기본 설정 입니다 /etc/systemd/logind.conf.

매뉴얼 페이지 logind.conf에서

KillUserProcesses=는 부울 매개변수를 사용합니다. 사용자가 로그오프할 때 사용자의 프로세스를 종료해야 하는지 여부를 구성합니다. true인 경우 세션에 해당하는 범위 단위와 해당 범위 내의 모든 프로세스가 종료됩니다.

해결 방법은 다음 명령을 사용하여 세션 범위 대신 사용자 범위에서 tmux를 명시적으로 시작하는 것입니다.

systemd-run --scope --user tmux

또한 활성 사용자 세션이 없는 경우에도 tmux 프로세스가 지속되도록 "지연"을 활성화해야 합니다.

loginctl enable-linger

자세한 내용은 매뉴얼 페이지의 예제를 확인하세요.시스템 실행 중.

답변2

이 문제가 발생했는지는 기억나지 않지만 "항상 켜져 있는" tmux 서버를 실행하기 위해 사용자 서비스를 사용해 왔습니다.

$ cat /home/tom/.config/systemd/user/tmux-server.service 
[Unit]
Description=tmux server

[Service]
Type=forking
ExecStart=/usr/bin/tmux -f %h/.config/tmux/server.conf start-server
ExecStop=/usr/bin/tmux kill-server

[Install]
WantedBy=default.target
$ cat /home/tom/.config/tmux/server.conf 
set -s exit-empty off
set -s exit-unattached off

그리고 선택적으로:

set -g detach-on-destroy off

물론, 오래 머무르는 것도 필요합니다.

관련 정보