Jak uruchomić Tmux / Screen z Systemd> 230?


19

Uruchamiam 16.04 i systemdteraz zabija, tmuxgdy użytkownik się rozłącza ( podsumowanie zmiany ).

Czy istnieje sposób na uruchomienie tmuxlub screen(lub podobny program) z systemd230? Czytałem wszystkie gorące dyskusje na temat zalet i wad behawioralnych, ale nie zaproponowano żadnego rozwiązania.

(Widzę też zachowanie w 229)


1
To dziwne - mam systemd-229-4ubuntu7(z aktualizacji xenial) i nie widzę tego zachowania. W każdym razie to zachowanie zostało już przywrócone w Debianiesystemd-230-2 , więc prawdopodobnie wkrótce zostanie również przywrócone w Ubuntu.
MvanGeest,

mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support ma pakiety zapobiegające-systemd- *, które pozwalają na instalację i używanie sysvinit jak wcześniej
mirabilos

Odpowiedzi:


1

Używając Ubuntu 18.04 z wersją systemową 237 , żadne z sugerowanych rozwiązań nie działało dla mnie.

Rozwiązaniem, które zadziałało dla mnie było

  • edytuj /etc/systemd/logind.conf
  • brak komentarza KillExlcudeUsers
  • dodaj listę użytkowników oddzieloną spacjami (np. KillExlcudeUsers=root user1 user2)

19

Właściwym rozwiązaniem jest wyłączenie przestępczych zachowań systemowych w całym systemie.

Edytuj /etc/systemd/logind.conf( musisz sudo , oczywiście) i ustaw

KillUserProcesses=no

Możesz również umieścić to ustawienie w osobnym pliku, np /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf.

Następnie uruchom ponownie systemd-logind.service.

sudo systemctl restart systemd-logind

4
W jaki sposób właściwe rozwiązanie problemu specyficznego dla jednego urządzenia umożliwia ustawienie niektórych ustawień całego systemu?
jpath

Ponieważ, jak widać nawet z samego czytania pytania, nie mówiąc już o całej innej dyskusji na ten temat, do której pytanie pośrednio się odwołuje, nie jest to specyficzne dla jednej aplikacji. To pytanie jest nawet pogrubione w pytaniu.
JdeBP

Musisz tylko włączyć przeciąganie się dla użytkownika przez loginctl enable-linger <user>. Od man loginctl: „Jeśli ta opcja jest włączona dla określonego użytkownika, menedżer użytkownika jest odradzany dla użytkownika podczas rozruchu i utrzymywany po wylogowaniu. Dzięki temu użytkownicy, którzy nie są zalogowani, mogą uruchamiać usługi długo działające”.
Adrian Günter,

Ubuntu 18.04 tutaj. To nie działa, nawet po ponownym uruchomieniu. Włączenie trwałości również nie.
Pa_

11

W oparciu o odpowiedź @ Rinzwind i zainspirowany opisem jednostki, najlepsze, co mogłem znaleźć, to użycie TaaS (Tmux jako usługa) - ogólnej, odłączonej instancji, do której tmuxponownie się przyłącza.

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

To jest fajne, ale nie mogę przez całe życie dowiedzieć się, dlaczego go użyjesz! :)
sarnold,

5
@sarnold: aby móc kontrolować aplikacje, które zaczynają się od konsoli, ale które mają działać w czasie uruchamiania. Minecraft jest jednym z przykładów.
WoJ,

5

RemainAfterExit =

Pobiera wartość logiczną, która określa, czy usługę należy uznać za aktywną, nawet po zakończeniu wszystkich jej procesów. Domyślnie nie.


Dzięki. Zaakceptowałem i dałem +1 twojej odpowiedzi, ponieważ stanowi ona rdzeń rozwiązania. Czy wiesz, czy można go używać w trybie interaktywnym (uruchamiając tmuxinteraktywnie, w przeciwieństwie do mojej odpowiedzi)?
WoJ

wątpię. systemd prawdopodobnie nie będzie troszczył się o twój tmux, chyba że powiesz systemd, że powinien :-P (ich podejście do tego jest raczej jednoznaczne ... wygląda na to, że jest to po ich myśli lub nie ma mowy.) Potrzebujesz opisu jednostki takiego jak ty opublikowane. Zapraszam do zaakceptowania twojego i / lub rozszerzenia twojego ;-) Nie potrzebuję rep>: - D
Rinzwind

3
Ta odpowiedź wymaga bardziej szczegółowych informacji, takich jak miejsce zastosowania tego ustawienia.
kasperd

1
Pewnie, ale odpowiedzią będzie skopiowanie / wklejenie strony podręcznika ;-)
Rinzwind

1
@WoJ Możesz utworzyć alias, tmuxaby zacząć jako systemd-run --remain-after-exit tmux(a może nawet z --scope --userflagami).
Debilski,

2

Musisz ustawić Typeusługę na forking, jak wyjaśniono tutaj .

Załóżmy, że screennazywa się usługa, w której chcesz uruchomić minecraft. Następnie otworzysz minecraft.servicew edytorze tekstu i dodasz lub edytujesz wpis Type=forkingw sekcji [Service].


0

Według /unix//a/287282/117599 przywoływanie tmuxza pomocą

systemd-run --user --scope tmux

powinien również załatwić sprawę.


Niestety wydaje się, że nie działa już w kosmicznej wersji 18.10.
taneli
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.