Come eseguire tmux / screen con systemd> 230?


19

Corro 16.04 e systemdora uccide tmuxquando l'utente si disconnette ( riepilogo della modifica ).

C'è un modo per eseguire tmuxo screen(o qualsiasi programma simile) con systemd230? Ho letto tutte le accese disussioni su pro e contro dei comportamenti, ma non è stata suggerita alcuna soluzione.

(Vedo anche il comportamento nel 229)


1
È strano - ho systemd-229-4ubuntu7(dagli aggiornamenti xenial) e non vedo questo comportamento. Comunque, questo comportamento è già stato ripristinato in Debiansystemd-230-2 , quindi probabilmente verrà ripristinato presto anche in Ubuntu.
MvanGeest,

mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support ha pacchetti prevent-systemd- * che ti permettono di installare e utilizzare sysvinit come prima
mirabilos

Risposte:


1

Usando Ubuntu 18.04 con systemd versione 237 , nessuna delle soluzioni suggerite ha funzionato per me.

La soluzione che ha funzionato per me è stata

  • modifica il /etc/systemd/logind.conf
  • uncomment KillExlcudeUsers
  • aggiungere un elenco di utenti separato da spazi (ad es. KillExlcudeUsers=root user1 user2)

19

La soluzione corretta è disabilitare il comportamento offensivo del sistema e del sistema.

Modifica /etc/systemd/logind.conf( devi sudo , ovviamente) e imposta

KillUserProcesses=no

È inoltre possibile inserire questa impostazione in un file separato, ad es /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf.

Quindi riavviare systemd-logind.service.

sudo systemctl restart systemd-logind

4
In che modo la soluzione corretta a un problema è specifica per un'unità per impostare alcune impostazioni di sistema?
sentiero

Perché, come puoi vedere anche solo leggendo la domanda, per non parlare di tutte le altre discussioni altrove su questo a cui la domanda fa riferimento indirettamente, questo non è specifico per un'applicazione. Questo è un punto che è persino in grassetto nella domanda.
JdeBP,

È sufficiente abilitare la permanenza per l'utente tramite loginctl enable-linger <user>. Da man loginctl: "Se abilitato per un utente specifico, un gestore utenti viene generato per l'utente all'avvio e mantenuto dopo i logout. Ciò consente agli utenti che non hanno effettuato l'accesso di eseguire servizi a lungo termine."
Adrian Günter,

Ubuntu 18.04 qui. Questo non funziona, nemmeno dopo il riavvio. L'abilitazione del persistere non lo fa neanche.
Pa_

11

Basato sulla risposta di @ Rinzwind e ispirato a una descrizione dell'unità, la cosa migliore che ho trovato è usare TaaS (Tmux as a Service), un'istanza distaccata generica di cui tmuxsi ricollega.

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

Questo è pulito ma non posso per la vita di me capire perché lo useresti! :)
sarnold,

5
@sarnold: per poter controllare le applicazioni che iniziano con una console, ma che si suppone siano in esecuzione all'avvio. Minecraft è un esempio.
WoJ,

5

RemainAfterExit =

Prende un valore booleano che specifica se il servizio deve essere considerato attivo anche quando tutti i suoi processi sono usciti. Il valore predefinito è no.


Grazie. Ho accettato e +1 la tua risposta in quanto fornisce il nucleo della soluzione. Sapresti se è utilizzabile in modalità interattiva (avviando in modo tmuxinterattivo, al contrario della mia risposta)?
WoJ,

ne dubito. systemd probabilmente non si preoccuperà del tuo tmux a meno che tu non dica a systemd che dovrebbe :-P (il loro approccio a questo è piuttosto risoluto .... sembra che sia la loro strada o no). Hai bisogno di una descrizione dell'unità come te postato. Sentiti libero di accettare il tuo e / o espandere il tuo ;-) Non ho bisogno del rappresentante>: - D
Rinzwind

3
Questa risposta richiede maggiori dettagli, ad esempio dove utilizzare tale impostazione.
Kasperd,

1
Certo, ma la risposta sarà una copia / incolla della pagina del manuale ;-)
Rinzwind

1
@WoJ Puoi creare un alias per tmuxiniziare come systemd-run --remain-after-exit tmux(o forse anche con le --scope --userbandiere).
Debilski,

2

Devi impostare il Typeservizio su forking, come spiegato qui .

Supponiamo che screenvenga chiamato il servizio in cui si desidera eseguire minecraft. Quindi si aprirà minecraft.servicein un editor di testo e aggiungere o modificare la voce Type=forkingnella sezione [Service].


0

Secondo /unix//a/287282/117599 invocando l' tmuxutilizzo

systemd-run --user --scope tmux

dovrebbe anche fare il trucco.


Sfortunatamente, questo non sembra più funzionare nel 18.10 cosmico.
Taneli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.