Как запустить tmux / screen с помощью systemd & gt; 230?

Я запускаю 16.04 и systemd теперь убивает tmux, когда пользователь отключается (сводка изменений).

Есть ли способ запустить tmux или screen (или любой другой подобный программа) с systemd 230? Я прочитал все расплывчатое рассуждение о плюсах и минусах поведенческого, но решения не было предложено.

(Я также вижу поведение в 229)

1
задан 24 July 2016 в 01:37

3 ответа

Правильное решение состоит в том, чтобы отключить поведение системы оскорбительных систем в целом.

Измените /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
15
ответ дан 23 May 2018 в 07:51
  • 1
    Как надлежащее решение проблемы, характерной для одного устройства, для установки какой-либо системы? – jpath 13 August 2017 в 21:37
  • 2
    Потому что, как вы можете видеть даже из чтения только вопроса, не говоря уже о другом обсуждении в другом месте, о котором косвенно ссылается вопрос, это не , характерное для одного приложения. Это точка, которая даже выделена жирным шрифтом в вопросе. – JdeBP 17 August 2017 в 12:04
  • 3
    Вам просто нужно разрешить задерживать пользователя через loginctl enable-linger <user>. Из man loginctl: «Если включено для определенного пользователя, пользовательский менеджер создается для пользователя при загрузке и сохраняется после выхода из системы. Это позволяет пользователям, которые не вошли в систему, запускать длительные службы. & Quot; – Adrian Günter 9 May 2018 в 05:02

Основываясь на ответе @ 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)#
8
ответ дан 23 May 2018 в 07:51
  • 1
    Это аккуратно, но я не могу для жизни понять, почему вы его используете! :) – sarnold 9 December 2016 в 09:43
  • 2
    @sarnold: иметь возможность управлять приложениями, которые начинаются с консоли, но которые предполагается запускать во время загрузки. Minecraft - один из примеров. – WoJ 9 December 2016 в 15:59

В соответствии с https://unix.stackexchange.com/a/287282/117599, вызывающим tmux с помощью

systemd-run --user --scope tmux

, также следует выполнить трюк.

0
ответ дан 23 May 2018 в 07:51

Другие вопросы по тегам:

Похожие вопросы: