共有ソケットによる永続的な tmux セッション

共有ソケットによる永続的な tmux セッション

/tmp/shared 内のソケットにセッション 0 の tmux セッションが常に存在するようにしたいと思います。そうすれば、いつでも SSH 経由でセッションに接続できます。

ssh [email protected] -t tmux -S /tmp/shared attach-session -t 0

他のユーザーと共有できるようにし、知識の少ないユーザーや不注意なユーザーがセッションを終了するときに [ctrl] + d ではなく exit を使用した場合に、自動的に再作成できるようにしたいと考えています。

これを cron で実行することは可能だと確信していますが、もっと良い方法がないかどうかはわかりません。

答え1

選択したユーザーの共通グループが所有するソケット ファイルを作成し、セッション名を使用する方が、セッション番号を使用するよりも適切です。

/// Create session
tmux -S /tmp/shareds new -s sharedsession
/// Change ownership to group
chgrp mutual_group_name /tmp/shareds
/// Run this in other user or ssh session to attach yourself
tmux -S /tmp/shareds attach -t sharedsession

セッション ステータスを確認する方法はいくつかあります。

  1. cron を作成することもできますが、最小 1 分ルールのため、共有セッションの作成が遅れます。
  2. init.dスクリプトを使用してサービスとして実行します。これです
  3. supervisordをインストールして、共有セッション作成スクリプトを自動デーモン化することができます。

昨年はtmateデーモンとして実行します。デーモン化された tmate を使用して、tmate サーバーを作成し、さまざまなマシンからセッションを接続できます。ただし、プライベート ネットワークで使用したため、セキュリティを保証することはできません。

答え2

以下はセッション 0 に接続するか、新しいセッションを作成します。

tmux new-session -t 0 || tmux

特定のセッション番号でセッションを作成することはできないと思うので、セッション名の使用を検討したほうがよいかもしれません。ただし、状況によってはカスタム ソケットで十分かもしれません。

ここでは、セッション 0 が存在しない場合は作成されるものと想定しています。

関連情報