実際に使用しているものを除いて、実行中の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
(または他のマルチプレクサ)に基づくソリューションも受け入れます;)
私があなたの質問を正しく理解した場合、-d
へのattach-session
オプションはあなたが望むことをします:
tmux -2 attach-session -d -t $WHOAMI
これは、指定されたターゲットセッションに接続し、他のすべてのクライアントを切り離します。
セッションがアタッチされた後、detach-client
の-a
および-t
オプションを使用して同様のことを行うことができます。クライアントに-t
という名前を付け、-a
を追加してすべてを切り離します。指定されたクライアント以外のクライアント。
screen
には同じことを行う-d
オプションもあります。