SSH経由でアクセスされるリモートシステムでtmuxを使用しています。何らかの理由で連続SSHログインセッション間でtmuxセッションが持続しません。アクセス権を持つ他のリモートコンピュータにログインしても、この問題は発生しません。これは本質的にこの記事で説明したのと同じ問題です。質問。
しかし、私が使用しているマシンはすでにssh.service
代わりに使用されているssh.socket
ので、許可された答えは私には適していません。
具体的な措置:
- SSH経由でマシンにログイン
- tmux セッションを開始し、いくつかのタスクを実行します。
- セッションを切断して再接続することもできます(動作します)。
- ログアウトするにはCtrl + Dを使用してください。
- もう一度ログインして、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
もちろん、長く滞在することも必要です。