16.04を実行し、ユーザーが切断したときにsystemd
強制終了tmux
します(変更の概要)。
230で実行tmux
するscreen
(または同様のプログラム)方法はありsystemd
ますか?私はビヘイビアの賛否両論についての白熱した議論をすべて読みましたが、解決策は提案されませんでした。
(229でも同様の動作が見られます)
16.04を実行し、ユーザーが切断したときにsystemd
強制終了tmux
します(変更の概要)。
230で実行tmux
するscreen
(または同様のプログラム)方法はありsystemd
ますか?私はビヘイビアの賛否両論についての白熱した議論をすべて読みましたが、解決策は提案されませんでした。
(229でも同様の動作が見られます)
回答:
適切な解決策は、システム全体で問題のある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
loginctl enable-linger <user>
。From man loginctl
:「特定のユーザーに対して有効にすると、ユーザーマネージャーが起動時にユーザーに対して生成され、ログアウト後も保持されます。これにより、ログインしていないユーザーが長時間実行されるサービスを実行できます。」
@Rinzwindの答えに基づいており、ユニットの説明に触発されて、私が見つけることができる最善の方法は、TaaS(Tmux as a Service)を使用する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)#
すべてのプロセスが終了した場合でも、サービスをアクティブと見なすかどうかを指定するブール値を取ります。デフォルトはnoです。
tmux
私の答えではなく、インタラクティブに起動することで)知っていますか?
tmux
としてsystemd-run --remain-after-exit tmux
(または--scope --user
フラグを付けて)を開始することができます。
systemd-229-4ubuntu7
(xenial-updatesから)、私はこの動作を見ていません。とにかく、この動作はすでにDebianでsystemd-230-2
元に戻されているので、おそらくUbuntuでもすぐに元に戻されるでしょう。