SSHログアウト時にTmuxセッションが終了しました。

SSHログアウト時にTmuxセッションが終了しました。

SSH経由でアクセスされるリモートシステムでtmuxを使用しています。何らかの理由で連続SSHログインセッション間でtmuxセッションが持続しません。アクセス権を持つ他のリモートコンピュータにログインしても、この問題は発生しません。これは本質的にこの記事で説明したのと同じ問題です。質問

しかし、私が使用しているマシンはすでにssh.service代わりに使用されているssh.socketので、許可された答えは私には適していません。

具体的な措置:

  1. SSH経由でマシンにログイン
  2. tmux セッションを開始し、いくつかのタスクを実行します。
  3. セッションを切断して再接続することもできます(動作します)。
  4. ログアウトするにはCtrl + Dを使用してください。
  5. もう一度ログインして、tmux aまたはtmux lsを試してください(動作しません)。

答え1

少し調査の終わりに私の問題の解決策を見つけました。

tmuxセッションを終了する理由はKillUserProcesses=yesのデフォルト設定です/etc/systemd/logind.conf

マニュアルページlogind.confから

KillUserProcesses= はブールパラメータを使用します。ユーザーがログオフするときにユーザーのプロセスを終了するかどうかを設定します。 true の場合、セッションに対応する範囲単位とその範囲内のすべてのプロセスが終了します。

回避策は、次のコマンドを使用してセッションスコープの代わりにユーザースコープでtmuxを明示的に起動することです。

systemd-run --scope --user tmux

また、アクティブなユーザーセッションがない場合でも、tmuxプロセスが持続するように「遅延」を有効にする必要があります。

loginctl enable-linger

詳細については、マニュアルページの例をご覧ください。システム実行中

答え2

この問題が発生したかどうかは覚えていませんが、「常にオンになっている」tmuxサーバーを実行するためにユーザーサービスを使用してきました。

$ cat /home/tom/.config/systemd/user/tmux-server.service 
[Unit]
Description=tmux server

[Service]
Type=forking
ExecStart=/usr/bin/tmux -f %h/.config/tmux/server.conf start-server
ExecStop=/usr/bin/tmux kill-server

[Install]
WantedBy=default.target
$ cat /home/tom/.config/tmux/server.conf 
set -s exit-empty off
set -s exit-unattached off

そしてオプションで:

set -g detach-on-destroy off

もちろん、長く滞在することも必要です。

関連情報