Comment faire fonctionner tmux / screen avec systemd 230?

13

J'exécute 16.04 et systemd tue tmux lorsque l'utilisateur se déconnecte ( résumé du changement ).

Existe-t-il un moyen d’exécuter tmux ou screen (ou tout programme similaire) avec systemd 230? J'ai lu toutes les discussions animées sur les avantages et les inconvénients solution a été suggérée.

(Je vois aussi le comportement en 229)

    
posée WoJ 24.07.2016 - 00:37
la source

5 réponses

4

RemainAfterExit =

  

Prend une valeur booléenne qui spécifie si le service doit être considéré comme actif même lorsque tous ses processus ont été fermés. La valeur par défaut est no.

    
réponse donnée Rinzwind 24.07.2016 - 00:44
la source
16

La solution appropriée consiste à désactiver le comportement systémique incriminé au niveau du système.

Modifier /etc/systemd/logind.conf (vous devez bien sûr sudo et définir

KillUserProcesses=no

Vous pouvez également placer ce paramètre dans un fichier séparé, par ex. /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf .

Puis redémarrez systemd-logind.service .

sudo systemctl restart systemd-logind
    
réponse donnée Michael Hampton 24.07.2016 - 09:32
la source
8

Basé sur la réponse de @Rinzwind et inspiré par une description d'unité Le mieux que je puisse trouver est d'utiliser TaaS (Tmux en tant que service) - une instance générique détachée de tmux one qui se rattache à.

# cat /etc/systemd/system/[email protected]

[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 [email protected].service
# systemctl start [email protected]
# 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)#
    
réponse donnée WoJ 24.07.2016 - 08:58
la source
0

Selon lien , appeler tmux à l’aide de

systemd-run --user --scope tmux

devrait également faire l'affaire.

    
réponse donnée phk 12.04.2017 - 23:42
la source
0

Vous devez définir Type du service sur forking , comme expliqué dans ici .

Supposons que le service que vous souhaitez exécuter dans screen s'appelle minecraft . Vous ouvrez ensuite minecraft.service dans un éditeur de texte et ajoutez ou modifiez l'entrée Type=forking sous la section [Service] .

    
réponse donnée MikeySkullivan 02.08.2018 - 22:23
la source

Lire d'autres questions sur les étiquettes