web-dev-qa-db-ja.com

tmuxセッションから現在の端末を除く他のすべての端末を切り離します

実際に使用しているものを除いて、実行中のtmuxセッションからすべての端末を切り離す方法はありますか?

少し奇妙に思えますが、これを行う意味は、ユーザーが「1つのシェル」でのみシステムを使用していることを確認しながら、エンドユーザーのリモートセッションに対してある程度の「永続性」レイヤーを維持することです。

説明したように ここ 、ユーザー名に基づいてセッションを作成するのは簡単です:

if [[ "$TMUX" == "" ]] &&
        [[ "$SSH_CONNECTION" != "" ]]; then
    # Attempt to discover a detached session and attach
    # it, else create a new session
    WHOAMI=$(whoami)
    if tmux has-session -t $WHOAMI 2>/dev/null; then
    tmux -2 attach-session -t $WHOAMI
    else
        tmux -2 new-session -s $WHOAMI
    fi
fi

ただし、最後に接続された端末だけが、ユーザーのtmuxセッションに接続されたままであることを確認したいと思います。

それを達成する方法はありますか? screen(または他のマルチプレクサ)に基づくソリューションも受け入れます;)

1
user34720

私があなたの質問を正しく理解した場合、-dへのattach-sessionオプションはあなたが望むことをします:

tmux -2 attach-session -d -t $WHOAMI

これは、指定されたターゲットセッションに接続し、他のすべてのクライアントを切り離します。

セッションがアタッチされた後、detach-client-aおよび-tオプションを使用して同様のことを行うことができます。クライアントに-tという名前を付け、-aを追加してすべてを切り離します。指定されたクライアント以外のクライアント。

screenには同じことを行う-dオプションもあります。

5
Stephen Kitt