web-dev-qa-db-ja.com

「screen -D -R」に相当するtmuxはありますか

tmuxscreen -D -Rのように動作させる方法があるかどうかを知りたいので、PuTTYのデフォルトコマンドとしてコマンドを使用します。

これらのscreenスイッチは、ユーザーの既存の画面セッションを強制的に切り離し(まだアクティブで、どこか他の場所でログインしていたとしても)、現在のセッションに再接続します。また、スクリーンセッションが存在しない場合は、新しいスクリーンセッションが作成されます。

私はtmuxが好きで、画面上で明確な利点を見ることができますが、この機能の存在は本当に取引を封印するでしょう。

tmux attachは、新しいセッションがない場合、新しいセッションを作成しないようです。

Tmuxのmanページには、次のように書かれています。

サーバーが起動していない場合、attach-session(attach)はサーバーを起動しようとします。 セッションが構成ファイルで作成されない限り、これは失敗します。

太字のセクションはどういう意味ですか? (confファイルにセッションを作成する例が見つかりません)。

13
Geeb

はい:

$ tmux attach -d || tmux new

-dは、screen -Dのように動作する必要があります。つまり、他のすべてのユーザーを切り離します。

Sshで接続し、接続または作成は次のようになります。

$ cat bin/stmux
#!/bin/sh
exec ssh -t $@ 'tmux attach -d || tmux new'

$ stmux my.remote.box
15
mmoya

セッションがない場合にtmux attachで新しいセッションを作成するには、tmux構成ファイルのオプションnew-sessionを使用します。ファイル~/.tmux.confが存在しない場合は作成し、追加します

new-session

それに。また、tmuxtmux attachにエイリアスします:)

4
phunehehe

これはShell関数でエミュレートできます。これは、POSIX準拠のシェルで機能するはずです。

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

これをtmux -zとして起動すると、探しているアクションが実行されます。

3
Chris Down

これは私にとって少し良く機能します:

tmux new-session -AD -s <session-name>
2
Z A

私はこれが.bashrcで最もうまくいくと思います

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi
1
user2451432

これを.shrcファイルまたはexecと同様に使用している場合は、

if tmux ls
  exec tmux attach
else
  exec tmux
fi
0
Aaron J Lang