GNU ScreenとTmux:ヒントとコツ


8

したがって、私はGNU ScreenTmuxのようなマルチプレクサの大ファンですが、Screenを何年も使用していても、まだわからないことがたくさんあることを認識しています(そしてTmuxを数か月しか使用していないので、さらに悪い)。

それらのソフトウェアで使用している構成とヒント、およびトリック(どちらか一方、どちらでも構いません)は?

私はこれを画面構成として使用します(私はこれをUbuntuのデフォルトから適合させたと思いますscreenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

ステータスバーをいくつかの色で表示し続けるのは簡単な設定ですが、画面とTmuxでできることは他にもあると確信しています。


zombie qrプロセスが停止している場合でもウィンドウを開いたままにし、ウィンドウqを閉じたりr、プロセスを復活させたりします。ソフトウェアの検証に役立ちます。
エンシー

回答:


4

これは、この群集にとっては少し単純かもしれませんが、これを.profileの最後に追加すると便利です。そのため、sshを介してリモートでログインすると、MOTDを読み取ってから、画面に切り替えます。

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi

3

これは私の.bashrcにあります。screenを実行していない場合、この関数は実行ssh時に通常どおりに呼び出されます。画面内で実行している場合(およびデフォルトを変更していない場合$TERM)、最初にウィンドウ名をリモートホストに設定します(オプションのパラメーターも一緒に)。開いている接続が多いときにリモート接続を追跡することは非常に便利です。

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

bind ^A windowlist -bウィンドウリストに簡単にアクセスするためにも使用します(Ctrl-Aを2回タップするだけです)。

すべてのウィンドウでの簡単なssh-agentサポート:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

次に、任意のウィンドウで、新しいセッションを開始するときに一度だけssh-addを実行します。

最後に、別のスクリーンセッション内からリモートスクリーンセッションに接続する場合、を使用screen -x -e ^Vvして、制御シーケンスをCTRL-V(たとえば)に設定できます。これにより、CTRL-Asをチェーンしてリモートセッションを制御する必要がなくなります。


0

あなたは考えるかもしれません屏風基本的に周りの指向ヒントの何百もの収集、トリック、構成、キーバインド、ステータススクリプト、およびベストプラクティスである、screentmux


0

ペインにtmuxを使い始めましたが、それでもscreenを使用してウィンドウを多重化します。tmuxはおそらくこの機能を備えていますが、ペインをあるウィンドウから別のウィンドウに交換することは私には直観的ではなく、2つの接続されたtmuxビューアが同じデーモン内の異なるウィンドウを表示することもできません(screen -x動作)。つまり、screen-in-tmuxソリューションです。これらは、2つのtmux.confバインドであり、理解するのに最も時間がかかり、毎日使用しています。

最初のバインドM(ctrl-b shift-M)は、マウスペインピッカーとマウスのハイライト/コピーの間でtmuxを切り替えます。ペインピックモードでも引き続きコピー/貼り付けできますが、シフトを保持する必要があります(その習慣になったら、他のアプリケーションでコピー/貼り付けを行うと少し悲惨になります)。マクロにより、現在選択されているモードが視覚的にわかりやすくなります。

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

2番目のバインドCL(ctrl-b ctrl-l)は、4つのペインの任意のレイアウトを取り、それを私の好みのレイアウトに変えます。多くの場合、画面内にあると思ったペインでctrl-dを押して閉じましたが、代わりに画面セッションがなく、ペインが閉じました。私のレイアウトはv-split、h-split、v-split、およびいくつかのサイズ変更であるため、最後のウィンドウ以外を誤って閉じた場合、再作成する必要のあるウィンドウ間の中間ペインを閉じるのは面倒になります(意図しない)。最後に、ペインを再作成してサイズを変更し、最後に、ペインを削除するときに切り離す必要があったすべてのスクリーンセッションを再接続します。このマクロを使用して、新しいペインctrl-b {(swap-pane -Uのデフォルトのバインド)を作成し、正しい順序に戻ってから、マクロを押すと、すべてが正常に戻ります。私の好みのレイアウトはおそらくあなたのものと同じではありません、list-windows 以下のようなレイアウト文字列を取得するコマンド。

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

それがあなたの好みに対して素朴すぎる場合、ペイン管理のためのtmuxinatorが常にあります。

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