web-dev-qa-db-ja.com

systemd> 230でtmux / screenを実行するには?

16.04を実行し、ユーザーが切断するとsystemdtmuxを強制終了します( 変更の概要 )。

tmuxまたはscreen(または同様のプログラム)をsystemd 230で実行する方法はありますか?I行動の長所と短所についての白熱した議論をすべて読んでください。しかし、解決策は提案されませんでした。

(229の動作も見られます)

17
WoJ

RemainAfterExit =

すべてのプロセスが終了した場合でも、サービスをアクティブと見なすかどうかを指定するブール値を取ります。デフォルトはnoです。

4
Rinzwind

適切な解決策は、システム全体で問題のある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
18
Michael Hampton

@Rinzwindの回答に基づいており、 ユニットの説明 に触発されて、TaaS(Tmux as a Service)を使用するのが最善です-tmuxoneの一般的な切り離されたインスタンスが再アタッチします。

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

here で説明されているように、サービスのTypeforkingに設定する必要があります。

screenで実行したいサービスがminecraftと呼ばれると仮定しましょう。次に、テキストエディタでminecraft.serviceを開き、セクションType=forkingの下に[Service]エントリを追加または編集します。

2
Robin Hartmann

https://unix.stackexchange.com/a/287282/117599 によるtmuxの呼び出し

systemd-run --user --scope tmux

また、トリックを行う必要があります。

0
phk