로그아웃으로 인해 tmux 세션이 종료되지 않도록 방지

로그아웃으로 인해 tmux 세션이 종료되지 않도록 방지

tmux내 X 사용자 세션에서 로그아웃(로그아웃) 하면 내가 시작한 모든 세션이 종료된다는 것을 알았습니다. sudo tmux비슷한 명령으로 실행한 세션도 마찬가지입니다. 이전에는 이런 일이 발생하지 않았을 것이라고 확신하지만 최근 일부 변경 사항이 이 동작에 영향을 미쳤습니다.

X 세션을 종료한 후에도 이러한 tmux세션을 어떻게 유지합니까?screen

답변1

이 "기능"은 systemd이전에도 존재했지만개발자는 systemd기본값을 변경하기로 결정했습니다., 세션에서 로그오프할 때 하위 프로세스를 종료하도록 설정을 활성화합니다.

logind.conf( )에서 이 설정을 복원할 수 있습니다 /etc/systemd/logind.conf.

KillUserProcesses=no

다음과 같은 래퍼를 tmux사용하여 실행할 수도 있습니다 .systemd-run

systemd-run --scope --user tmux

이러한 시스템의 경우 명령에 이름만 지정할 수 있습니다 tmux(또는 screen:

alias tmux="systemd-run --scope --user tmux"

답변2

누락된 비트SU에서 찾을 수 있습니다.:

첫째: $USER로그아웃한 후에도 SystemD 인스턴스를 계속 실행합니다.

sudo loginctl enable-linger $USER

두번째:재시작. ( man loginctl이 설정은 다음 시작시에만 적용됩니다.)

세 번째: tmuxSystemD 인스턴스의 제어 하에 시작합니다.$USER

systemd-run --scope --user tmux

그게 다야.

/etc/systemd/logind.conf이에 대한 변경은 필요하지 않습니다 .

노트:

  • 이를 수행하지 않는 사용자에게만 필요합니다 root.
  • tmux을 통과하는 대신 직접 실행 하면 systemd-run종료됩니다.
  • 따라서 다음과 같이 별칭이나 래퍼 스크립트를 사용하십시오.
#!/bin/bash

[ -x /usr/bin/systemd-run ] &&
dbus-send --print-reply / org.freedesktop.DBus.Peer.Ping &&
/usr/bin/systemd-run --scope --user -- /bin/true &&
exec /usr/bin/systemd-run --scope --user -- /usr/bin/tmux "$@"
exec /usr/bin/tmux "$@"

프로필이 재설정된 후 사라질 수 있는 편집 내용을 chmod +x "$HOME/bin/tmux"방지하기 위해 설치했습니다 ..bashrc

업데이트: 컨텍스트에서 /usr/bin/systemd-run --scope --user -- /bin/trueX11 병렬 활동을 사용할 수 있는지 테스트해야 합니다 . 여기서 영구적으로 실행하려면 가 아닌 X11 세션에서 실행해야 합니다 .systemd-runsshtmuxssh

업데이트 2: 재부팅이 필요하며링거 상태를 확인할 수 있습니다.그리고

ls -al /var/lib/systemd/linger

관련 정보