Tmux / screen systemd> 230 ile nasıl çalıştırılır?


19

16.04 çalıştırıyorum ve systemdşimdi tmuxkullanıcı bağlantıyı kestiğinde öldürür ( değişikliğin özeti ).

230 ile çalışmanın tmuxveya screen(veya benzer bir programın) bir yolu var mı systemd? Açıkçası artıları ve eksileri hakkında tüm ısıtılmış tartışma okudum ama hiçbir çözüm önerildi.

(Davranışı 229'da da görüyorum)


1
Bu tuhaf - systemd-229-4ubuntu7(xenial-updates'den) var ve bu davranışı görmüyorum. Neyse, bu davranış zaten geri alınmış olsa Debian ensystemd-230-2 muhtemelen yakında çok Ubuntu haline döndürüldü olacak, böylece.
MvanGeest

mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support , sysvinit'i daha önce kurmanıza ve kullanmanıza izin veren engelleme-systemd- * paketlerine sahiptir
mirabilos

Yanıtlar:


1

Kullanılması Ubuntu 18.04 ile systemd sürümü 237 , önerilen çözümlerin hiçbiri benim için çalıştı.

Benim için işe yarayan çözüm

  • düzenle /etc/systemd/logind.conf
  • yorumsuz KillExlcudeUsers
  • boşlukla ayrılmış bir kullanıcı listesi ekleyin (ör. KillExlcudeUsers=root user1 user2)

19

Uygun çözüm, sistem genelinde rahatsız edici sistem davranışını devre dışı bırakmaktır.

Düzenleyin /etc/systemd/logind.conf( tabii ki sudo gerekir ) ve ayarlayın

KillUserProcesses=no

Bu ayarı ayrı bir dosyaya da koyabilirsiniz, örn /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf.

Ardından yeniden başlatın systemd-logind.service.

sudo systemctl restart systemd-logind

4
Sistem genelinde bazı ayarları yapmak için bir birime özgü bir soruna doğru çözüm nasıl?
jpath

Çünkü, sadece soruyu okurken bile görebileceğiniz gibi, bu konudaki diğer tüm tartışmalarda, dolaylı olarak sorunun atıfta bulunduğu gibi, bu bir uygulamaya özgü değildir . Bu, soruda koyu harflerle yazılmış bir noktadır.
JdeBP

Sadece kullanıcı için lingering özelliğini etkinleştirmeniz gerekir loginctl enable-linger <user>. Kimden man loginctl: "Belirli bir kullanıcı için etkinleştirilirse, kullanıcı yöneticisi önyükleme sırasında kullanıcı için oluşturulur ve oturumdan sonra saklanır. Bu, oturum açmamış kullanıcıların uzun süredir devam eden hizmetleri çalıştırmasına olanak tanır."
Adrian Günter

Ubuntu 18.04 burada. Bu, yeniden başlattıktan sonra bile çalışmaz. Kalanları etkinleştirmek de değildir.
Pa_

11

@ Rinzwind'in cevabına dayanarak ve bir ünite tanımından esinlenerek bulabildiğim en iyi şey, tmuxbir reattaches'in genel müstakil bir örneği olan TaaS (Hizmet olarak Tmux) kullanmaktır.

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

Bu temiz ama hayatım boyunca neden onu kullanacağını anlayamıyorum! :)
sarnold

5
@sarnold: bir konsolla başlayan ancak önyükleme zamanında çalıştığı düşünülen uygulamaları denetleyebilmek için. Minecraft buna bir örnektir.
WoJ

5

RemainAfterExit =

Hizmetin tüm süreçleri kapalıyken bile etkin olarak değerlendirilip değerlendirilmeyeceğini belirten bir boole değeri alır. Varsayılan olarak hayır.


Teşekkürler. Çözümün özünü sağladığı için cevabınızı kabul ettim ve + 1'ledim. Etkileşimli modda kullanılabilir olup olmadığını biliyor muydunuz ( tmuxcevabımın aksine etkileşimli olarak başlatarak )?
WoJ

şüphe. systemd muhtemelen tmux'unuzu umursamayacak olmadıkça sistemd'e şunları söylemelidir :-P (buna yaklaşımları tek fikirlidir .... bu onların yolu veya hiçbir yolu gibi görünmüyor.) Sizin gibi bir birim açıklamasına ihtiyacınız var. gönderildi. Sizinkini kabul etmekten ve / veya sizinkini genişletmekten çekinmeyin ;-) Temsilciye ihtiyacım yok: - D
Rinzwind

3
Bu yanıtın bu ayarın nerede kullanılacağı gibi daha fazla ayrıntıya ihtiyacı var.
kasperd

1
Tabii ama cevap manuel sayfanın bir kopyası / macunu olacak ;-)
Rinzwind

1
@WoJ tmuxBaşlamak için systemd-run --remain-after-exit tmux(veya belki --scope --userbayraklarla bile ) bir takma ad yapabilirsiniz .
Debilski

2

Burada açıklandığı gibi Typehizmetin ayarını yapmanız gerekir .forking

Varsayalım ki çalıştırmak istediğiniz hizmetin screençağrıldığını varsayalım minecraft. Ardından minecraft.servicebir metin düzenleyicide açılır Type=forkingve bölümün altındaki girişi ekler veya düzenlersiniz [Service].


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.