16.04を実行し、ユーザーが切断するとsystemd
がtmux
を強制終了します( 変更の概要 )。
tmux
またはscreen
(または同様のプログラム)をsystemd
230で実行する方法はありますか?I行動の長所と短所についての白熱した議論をすべて読んでください。しかし、解決策は提案されませんでした。
(229の動作も見られます)
すべてのプロセスが終了した場合でも、サービスをアクティブと見なすかどうかを指定するブール値を取ります。デフォルトはnoです。
適切な解決策は、システム全体で問題のある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
@Rinzwindの回答に基づいており、 ユニットの説明 に触発されて、TaaS(Tmux as a Service)を使用するのが最善です-tmux
oneの一般的な切り離されたインスタンスが再アタッチします。
# 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)#
here で説明されているように、サービスのType
をforking
に設定する必要があります。
screen
で実行したいサービスがminecraft
と呼ばれると仮定しましょう。次に、テキストエディタでminecraft.service
を開き、セクションType=forking
の下に[Service]
エントリを追加または編集します。
https://unix.stackexchange.com/a/287282/117599 によるtmux
の呼び出し
systemd-run --user --scope tmux
また、トリックを行う必要があります。