16.04를 실행 하고 사용자가 연결을 끊으면 systemd
죽습니다 tmux
( 변경 요약 ).
230 으로 실행 tmux
하거나 screen
비슷한 프로그램 을 실행하는 방법이 systemd
있습니까? 나는 행동의 장단점에 대한 격렬한 논의를 읽었지만 해결책은 제안되지 않았다.
(229의 동작도 참조하십시오)
16.04를 실행 하고 사용자가 연결을 끊으면 systemd
죽습니다 tmux
( 변경 요약 ).
230 으로 실행 tmux
하거나 screen
비슷한 프로그램 을 실행하는 방법이 systemd
있습니까? 나는 행동의 장단점에 대한 격렬한 논의를 읽었지만 해결책은 제안되지 않았다.
(229의 동작도 참조하십시오)
답변:
올바른 해결책은 시스템 전체에서 문제가되는 시스템 동작을 비활성화하는 것입니다.
편집 /etc/systemd/logind.conf
( 물론 sudo해야 함 ) 및 설정
KillUserProcesses=no
이 설정을 별도의 파일에 넣을 수도 있습니다 (예 :) /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf
.
그런 다음 다시 시작하십시오 systemd-logind.service
.
sudo systemctl restart systemd-logind
loginctl enable-linger <user>
. From man loginctl
: "특정 사용자에 대해 활성화 된 경우, 사용자 관리자는 부팅시 사용자를 위해 생성되고 로그 아웃 후에도 유지됩니다. 이렇게하면 로그인하지 않은 사용자는 장기 실행 서비스를 실행할 수 있습니다."
@Rinzwind의 답변을 기반으로하고 단위 설명 에서 영감을 얻은 가장 좋은 것은 TaaS (Tmux as a Service)를 사용 tmux
하는 것입니다.
# cat /etc/systemd/system/tmux@.service
[Unit]
Description=tmux default session (detached)
Documentation=man:tmux(1)
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s %I
ExecStop=/usr/bin/tmux kill-server
KillMode=none
[Install]
WantedBy=multiplexer.target
# systemctl start tmux@instanceone.service
# systemctl start tmux@instancetwo.service
# tmux list-sessions
instanceone: 1 windows (created Sun Jul 24 00:52:15 2016) [193x49]
instancetwo: 1 windows (created Sun Jul 24 00:52:19 2016) [193x49]
# tmux attach-session -t instanceone
(instanceone)#
모든 프로세스가 종료 된 경우에도 서비스가 활성으로 간주되는지 여부를 지정하는 부울 값을 사용합니다. 기본값은 no입니다.
tmux
내 대답과 반대로 대화 형 으로 시작하여) 사용할 수 있습니까?
tmux
시작 하기 위해 별칭을 만들 수 있습니다 . systemd-run --remain-after-exit tmux
--scope --user
systemd-229-4ubuntu7
(xenial-updates에서) 가지고 있으며이 동작을 보지 못합니다. 어쨌든,이 동작은 이미 데비안에서systemd-230-2
복구되었으므로 우분투에서도 곧 복구 될 것입니다.