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


13

このようにtmux振る舞う方法があるかどうかを知りたいscreen -D -Rので、Puttyでコマンドをデフォルトコマンドとして使用できます。

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

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

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

tmuxのmanページには次のように書かれています:

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

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


manページから:「コンフィギュレーション・ファイルの集合であるtmuxサーバが最初に起動したときの順序で実行されるコマンド。」 -あなたが実際に持っている可能性attachnew-session、あなたの中の行として.tmux.conf
sr_

@sr_まあ、サーバーを最初に起動するnew-sessionだけでとにかく起こっているだろう...
クリス・ダウン

SOでこの(閉じた)質問を見つけました。同じ質問と同じような答え。stackoverflow.com/q/3432536/168034
phunehehe

回答:


15

はい:

$ 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

1
はい-これは、私が要求したことを達成するための最も効果的な方法のようです。同様new-sessionに、tmuxセッション中に設定ファイルを編集してリロードする場合に備えて、設定ファイルを承認しません。
ゲーブ14年

4

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

new-session

それに。また、I別名tmuxtmux attach:)


1
コマンドを使用して構成をリロードすると(これを参照)、新しいセッションが開始されるため、私は参加new-sessionしたくないのです。はい、私はそれを殺してから前のものに添付することができますが、それは少し面倒です。~/.tmux.confsource-file ~/.tmux.conf
mmoya

3

これはシェル関数でエミュレートできます。これは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、探しているアクションが実行されます。


2

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

tmux new-session -AD -s <session-name>

1

これは.bashrcで私に最適です

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

OPの太字のセクションをどのように説明していますか?
アントン

0

あなたがこれを.shrcファイルまたは類似のものの中で使用している場合、exec私はお勧めします

if tmux ls
  exec tmux attach
else
  exec tmux
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.