
私は与えられた環境で変更を適用するときにセッションの出力をファイルに書き込むためにscreenの "log"コマンドをたくさん使います。 tmuxのマニュアルページを検索しましたが、そのエントリが見つかりませんでした。 tmuxに似た機能があるかどうかを知っている人はいますか?それともこれを行うには、独自のラッパースクリプトを作成する必要がありますか?
編集:「スクリプト」やその他のユーティリティを使用すると、セッションを録音できることがわかります。画面の機能を非常に便利にすることは、文字列エスケープを使用して各セッションを一意に識別するログファイル変数を定義する機能です。
たとえば、ホスト名が与えられると、新しい画面ウィンドウでそのホストに対してSSHを実行し、ウィンドウのタイトルをホスト名に設定するシェル機能があります。そのセッションのログを開始すると、ウィンドウのタイトルが前に付けられます。
この機能がtmuxにない場合は、記録したいセッションを「スクリプト」するために新しいシェル関数セットを作成する必要があります。あまり難しくありませんが、画面がすでに私の要件に完全に適していることを考慮すると、努力する価値はありません。
答え1
私があなたの言葉を解読するかどうか見てみましょう画面正しい設定:
- 後で開始されるログファイルの名前を設定するために、このようなものを
logfile "%t-screen.log"
(おそらくファイル内で)使用できます。.screenrc
- あなたは
title <hostname>
(Ca A)を使用します画面コマンドは新しいウィンドウのタイトルを設定するか、新しい画面セッションを
開始します。screen -t <hostname> ssh0 <hostname>
- Ca H(Ca:log)を使用してください。画面コマンドは、ロギングを構成ファイルに切り替えます。
その場合、ほぼ同じです(要求されます)。マルチプレクサ1.3+pipe-pane
では、シェルコマンドで#Wをpipe-pane
使用できます。マルチプレクサ1.0+):
設定ファイル(例
.tmux.conf
:)から:bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
- (Cb、)を使用して
tmux rename-window <hostname>
既存のウィンドウの名前を変更するか、次のように
新しいtmux new-window -n <hostname> 'ssh <hostname>'
ウィンドウを起動します。マルチプレクサウィンドウまたは新しい
スタートtmux new-session -n <hostname> 'ssh <hostname>'
マルチプレクサ会議。 - Cb H を使用してロギングを切り替えます。
ログが切り替えられたという通知はありませんが、必要に応じて通知を追加できます。
bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'
.tmux.conf
注:上記の行は、設定ファイル(または独自の)にあるように見えますsource
。マルチプレクサバックスラッシュとセミコロンの両方を確認する必要があります。シェルで設定するには、tmux bind-key …
この2つの文字を適切にエスケープするか、引用符で囲む必要があります。マルチプレクサ触れていない。単一のバインディングを使用している場合は、オン/オフ切り替えに関するさまざまなメッセージを表示する便利な方法はないようです(おそらくこれを使用して何かを操作できますが、if-shell
おそらく見苦しいでしょう)。両方のバインディングが許可されている場合は、以下を試してください。
bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'
bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'
答え2
以下は、キーバインディングを中断することなくロギングを許可するtmuxプラグインです.tmux.conf
。
https://github.com/tmux-plugins/tmux-logging
特徴:
prefix + P
ウィンドウのロギングを切り替えます。不要なANSI文字が出力から削除されました!prefix + Alt + P
ウィンドウ全体の履歴をファイルに保存
答え3
tmuxのドキュメントを見た後、スクリーンウィンドウのロギングに対応するエントリが見つかりません。必要な操作を実行するには、シェル機能を使用する必要があるか、画面のみを使用する必要があるようです。デバッグをオンにすると、サーバー側とクライアント側が記録されますが、関連していないtmux関連のログもたくさん含まれているため、正確には望ましくありません。
tmuxのクリップボードを使用して、バッファを別のセッションに自動的に保存できます。このセッションは、クリップボードの内容を受け入れてファイルに保存するように設定されます。これは少しハッキングされているようです。
答え4
あなたはそれを使用することができますpipe-pane
注文するプレフィックスの後ろにtmux
(基本プレフィックス、これはCTRL+ b:pipe-pane
)です。
実施例1
発見されたケースここターゲットファイルを上書きします(この場合myfile
):
pipe-pane "cat >myfile"
実施例2
tmux
マニュアルの例ロギングを切り替えて上書きするのではなく、指定したファイルに追加するためにキーの組み合わせをバインドします。
この
-o
オプションは、古いパイプがない場合にのみ新しいパイプを開きます。たとえば、単一のキーでパイプを切り替えることができます。bind-key C-p pipe-pane -o 'cat >>~/output.#I-#P'