systemd> 230으로 tmux / screen을 실행하는 방법은 무엇입니까?


19

16.04를 실행 하고 사용자가 연결을 끊으면 systemd죽습니다 tmux( 변경 요약 ).

230 으로 실행 tmux하거나 screen비슷한 프로그램 을 실행하는 방법이 systemd있습니까? 나는 행동의 장단점에 대한 격렬한 논의를 읽었지만 해결책은 제안되지 않았다.

(229의 동작도 참조하십시오)


1
이상합니다- systemd-229-4ubuntu7(xenial-updates에서) 가지고 있으며이 동작을 보지 못합니다. 어쨌든,이 동작은 이미 데비안에서systemd-230-2 복구되었으므로 우분투에서도 곧 복구 될 것입니다.
MvanGeest

mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support 에는 sysvinit를 이전과 같이 설치 및 사용할 수있는 시스템 방지 * 패키지가 있습니다.
mirabilos

답변:


1

systemd 버전 237 과 함께 Ubuntu 18.04 를 사용 하면 제안 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.

나를 위해 일한 해결책은

  • 편집하다 /etc/systemd/logind.conf
  • 주석 해제 KillExlcudeUsers
  • 사용자의 공백으로 구분 된 목록을 추가 (예 KillExlcudeUsers=root user1 user2)

19

올바른 해결책은 시스템 전체에서 문제가되는 시스템 동작을 비활성화하는 것입니다.

편집 /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

4
시스템 전체 설정을 설정하기 위해 특정 장치에 특정한 문제에 대한 적절한 해결책은 무엇입니까?
jpath

질문을 읽는 것만으로 볼 수 있듯이, 질문에 간접적으로 언급하는 다른 모든 토론은 물론, 이것은 하나의 응용 프로그램에만 국한 되지 않습니다 . 이것은 질문에서 대담한 점입니다.
JdeBP

를 통해 사용자를 위해 머무르기 만하면됩니다 loginctl enable-linger <user>. From man loginctl: "특정 사용자에 대해 활성화 된 경우, 사용자 관리자는 부팅시 사용자를 위해 생성되고 로그 아웃 후에도 유지됩니다. 이렇게하면 로그인하지 않은 사용자는 장기 실행 서비스를 실행할 수 있습니다."
Adrian Günter

우분투 18.04 여기. 재부팅 후에도 작동하지 않습니다. 머무르는 것도 가능하지 않습니다.
Pa_

11

@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)#

이것은 깔끔하지만 내 인생에서는 왜 그것을 사용할지 알아낼 수 없습니다! :)
sarnold

5
@sarnold : 콘솔로 시작하지만 부팅시 실행되는 응용 프로그램을 제어 할 수 있습니다. 마인 크래프트가 그 예입니다.
WoJ

5

RemainAfterExit =

모든 프로세스가 종료 된 경우에도 서비스가 활성으로 간주되는지 여부를 지정하는 부울 값을 사용합니다. 기본값은 no입니다.


감사. 솔루션의 핵심을 제공하므로 귀하의 답변을 수락하고 +1합니다. 대화 형 모드에서 사용할 수 있는지 ( tmux내 대답과 반대로 대화 형 으로 시작하여) 사용할 수 있습니까?
WoJ

의심해 systemd는 systemd에게 다음과 같이 말하지 않는 한 tmux에 신경 쓰지 않을 것입니다 : -P 게시했습니다. 자유롭게 받아
들이고

3
이 답변에는 해당 설정을 사용할 위치와 같은 자세한 정보가 필요합니다.
카스퍼 드

1
그러나 대답은 매뉴얼 페이지의 복사 / 붙여 넣기가 될 것입니다 ;-)
Rinzwind

1
@WoJ 당신은 (또는 플래그로) tmux시작 하기 위해 별칭을 만들 수 있습니다 . systemd-run --remain-after-exit tmux--scope --user
Debilski

2

여기에 설명 된대로 Type서비스를 로 설정해야합니다 .forking

하자가 당신이 실행하려는 서비스가 가정 screen이라고합니다 minecraft. 그런 다음 minecraft.service텍스트 편집기에서 열고 Type=forking섹션 아래의 항목을 추가하거나 편집합니다 [Service].


0

에 따르면 /unix//a/287282/117599 호출 tmux사용

systemd-run --user --scope tmux

트릭을 수행해야합니다.


불행히도 이것은 18.10 우주에서 더 이상 작동하지 않는 것으로 보입니다.
taneli
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.