Je lance 16.04 et systemd
tue maintenant tmux
lorsque l'utilisateur se déconnecte ( résumé du changement ).
Est-il possible d'exécuter tmux
ou screen
(ou tout programme similaire) avec systemd
230? J'ai lu toute la discussion animée sur les avantages et les inconvénients du comportement mais aucune solution n'a été suggérée.
(Je vois le comportement dans 229 aussi)
Prend une valeur booléenne qui spécifie si le service doit être considéré comme actif même lorsque tous ses processus sont terminés. La valeur par défaut est non.
La solution appropriée consiste à désactiver le comportement fautif de systemd à l'échelle du système.
Editez /etc/systemd/logind.conf
( vous devez Sudo , bien sûr) et réglez
KillUserProcesses=no
Vous pouvez également placer ce paramètre dans un fichier séparé, par exemple. /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf
.
Puis redémarrez systemd-logind.service
.
Sudo systemctl restart systemd-logind
Sur la base de la réponse de @Rinzwind et inspirée par un description de l'unité , le mieux que je puisse trouver est d'utiliser TaaS (Tmux en tant que service) - une instance détachée générique de tmux
le qui est réattaché.
# 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]
# 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)#
Vous devez définir le Type
du service sur forking
name__, comme expliqué ici .
Supposons que le service que vous souhaitez exécuter dans screen
s'appelle minecraft
name__. Ensuite, ouvrez minecraft.service
dans un éditeur de texte et ajoutez ou modifiez l'entrée Type=forking
dans la section [Service]
.
Selon https://unix.stackexchange.com/a/287282/117599 invoquer tmux
à l'aide de
systemd-run --user --scope tmux
devrait aussi faire l'affaire.