web-dev-qa-db-ja.com

tmuxにGNU Screenの "log"コマンドに相当するものはありますか?

特定の環境で変更を行う場合、画面の「log」コマンドを多用して、セッションの出力をファイルに記録します。 tmuxのmanページを検索しましたが、同等のものが見つかりませんでした。誰かがtmuxの同様の機能を知っていますか、またはこれを行うには独自のラッパースクリプトを記述する必要がありますか?

編集:セッションをログに記録できる「スクリプト」およびその他のユーティリティを知っています。画面の機能が非常に役立つ理由は、各セッションを一意に識別するために文字列エスケープを使用するログファイル変数を定義する機能です。

例えばホスト名を指定すると、新しい画面ウィンドウでそのホストにSSHで接続し、ウィンドウのタイトルをホスト名に設定するシェル関数があります。そのセッションのログを開始すると、ウィンドウタイトルが前に付けられます。

この機能がtmuxに存在しない場合は、ログに記録するセッションの「スクリプト」を設定するために、新しいシェル関数のセットを作成する必要があります。これはそれほど難しいことではありませんが、画面がすでに必要な機能を備えているので、努力する価値はありません。

35
Murali Suriar

screenの設定を正しく解読したかどうか確認してみましょう。

  • logfile "%t-screen.log"(おそらく.screenrcファイル内)のようなものを使用して、後で開始するログファイルの名前を構成します。
  • title <hostname>(C-a A)screenコマンドを使用して、新しいウィンドウのタイトルを設定する、または
    新しいスクリーンセッションを開始するには、screen -t <hostname> ssh0 <hostname>を実行します。
  • C-a H(C-a:log)screenコマンドを使用して、構成済みファイルへのロギングを切り替えます。

その場合、ほぼ同等です(pipe-paneシェルコマンドで#Wをサポートするにはtmux 1.3+が必要です。pipe-panetmux 1.0で使用できます) +):

  • 構成ファイル(例:.tmux.conf):

    bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
    
  • tmux rename-window <hostname>(C-b、)を使用して既存のウィンドウの名前を変更する、または
    tmux new-window -n <hostname> 'ssh <hostname>'を使用して新しいtmuxウィンドウを開始する、または
    tmux new-session -n <hostname> 'ssh <hostname>'を使用して、新しいtmuxセッションを開始します。
  • ロギングを切り替えるには、C-b 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は、バックスラッシュとセミコロンの両方を表示する必要があります。これをシェルから構成する場合(例:tmux bind-key …)、両方の文字を適切にエスケープまたは引用符で囲んで、tmuxにそのまま配信されるようにする必要があります。単一のバインディングのみを使用する場合にオン/オフを切り替えるためのさまざまなメッセージを表示する便利な方法はないようです(if-Shellで何かをリギングできるかもしれませんが、おそらく醜いでしょう)。 2つのバインディングが許容できる場合は、これを試してください。

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'
39
Chris Johnsen

.tmux.confのキーバインディングをいじらずにログを記録できるtmuxプラグインを次に示します。

https://github.com/tmux-plugins/tmux-logging

特徴:

  • prefix + Pペインロギングを切り替えます。不要なANSI文字から出力が消去されます!
  • prefix + Alt + P完全なペイン履歴をファイルに保存します
5
user80379

Tmuxのドキュメントを調べた後、画面のウィンドウロギングに相当するものを見つけることができません。シェル関数を使用して必要な操作を行うか、画面を使用する必要があるようです。サーバー側とクライアント側の両方をログに記録するデバッグをオンにすることもできますが、tmux関連の無関係なログも多数含まれているため、正確には何を求めているのかわかりません。

Tmuxのクリップボードを使用して、バッファーを別のセッションに自動保存できます。これは、クリップボードの内容を受け入れてファイルに保存するように設定されています。これは一種のハックのようです。

4
jsbillings

私はスクリプトを使用してそれを行います、これは私のtmux.confファイルからです

bind ^C new-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"
bind c new-window "script -f /home/jcosta/mydocs/work/logs/$( date '+%d%m%Y_%H%M%S')_$$.log"
bind | split-window "script -f /home/jcosta/mydocs/work/logs/$(date '+%d%m%Y_%H%M%S')_$$.log"
1
user6119