tmux
をscreen -D -R
のように動作させる方法があるかどうかを知りたいので、PuTTYのデフォルトコマンドとしてコマンドを使用します。
これらのscreen
スイッチは、ユーザーの既存の画面セッションを強制的に切り離し(まだアクティブで、どこか他の場所でログインしていたとしても)、現在のセッションに再接続します。また、スクリーンセッションが存在しない場合は、新しいスクリーンセッションが作成されます。
私はtmuxが好きで、画面上で明確な利点を見ることができますが、この機能の存在は本当に取引を封印するでしょう。
tmux attach
は、新しいセッションがない場合、新しいセッションを作成しないようです。
Tmuxのmanページには、次のように書かれています。
サーバーが起動していない場合、attach-session(attach)はサーバーを起動しようとします。 セッションが構成ファイルで作成されない限り、これは失敗します。
太字のセクションはどういう意味ですか? (confファイルにセッションを作成する例が見つかりません)。
はい:
$ 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
セッションがない場合にtmux attach
で新しいセッションを作成するには、tmux構成ファイルのオプションnew-session
を使用します。ファイル~/.tmux.conf
が存在しない場合は作成し、追加します
new-session
それに。また、tmux
をtmux attach
にエイリアスします:)
これは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
として起動すると、探しているアクションが実行されます。
これは私にとって少し良く機能します:
tmux new-session -AD -s <session-name>
私はこれが.bashrcで最もうまくいくと思います
if [[ -z $TMUX ]]; then
tmux attach-session || tmux new-session
fi
これを.shrcファイルまたはexec
と同様に使用している場合は、
if tmux ls
exec tmux attach
else
exec tmux
fi