Я работаю 16.04 и systemd
теперь уничтожает tmux
когда пользователь разъединяется (сводка изменения).
Есть ли способ работать tmux
или screen
(или любая подобная программа) с systemd
230? Я считал весь горячий disussion о за и против поведений, но никакое решение не было предложено.
(Я вижу поведение в 229 также),
Используя Ubuntu 18.04 с systemd версией 237, ни одно из предложенных решений не работало на меня.
Решение, которое работало на меня, было к
/etc/systemd/logind.conf
KillExlcudeUsers
KillExlcudeUsers=root user1 user2
)Принимает булево значение, которое указывает, нужно ли сервис считать активным даже когда все его процессы, из которых выходят. Значения по умолчанию к нет.
Надлежащее решение состоит в том, чтобы отключить оскорбление systemd поведение в масштабе всей системы.
Редактирование /etc/systemd/logind.conf
( Вы должны sudo, конечно) и устанавливают
KillUserProcesses=no
, можно также поместить эту установку в отдельный файл, например, /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf
.
Затем перезапуск systemd-logind.service
.
sudo systemctl restart systemd-logind
Согласно https://вызов tmux
unix.stackexchange.com/a/287282/117599 с помощью
systemd-run --user --scope tmux
должен также добиться цели.
На основе ответа @Rinzwind и вдохновленный описанием единицы лучшее, которое я мог найти, должно использовать TaaS (Tmux как услуга) - универсальный отдельный экземпляр tmux
каждый повторно прикрепляет к.
# 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)#
Необходимо установить Type
из сервиса к forking
, как объяснено здесь.
Давайте примем сервис, в котором Вы хотите работать screen
назван minecraft
. Затем Вы открылись бы minecraft.service
в текстовом редакторе и добавляют или редактируют запись Type=forking
под разделом [Service]
.