複数のリモートファイルの末尾


41

リモートのtail 2ファイルに方法はありますか?

ロードバランサーの背後に2つのサーバー(aとb)があり、可能であれば次のようなことをしたいと思います。

tail -f admin@serverA:~/mylogs/log admin@serverB:~/mylogs/log

ありがとう!


なぜ答えを消したのですか?
パブロフェルナンデス

主に、それが機能しなかったためです:
マット

@matああ私はちょうどそれをしようとしていた:)。とにかく、ありがとう!
パブロフェルナンデス

<(foo)構造は、内部コマンドが終了するのを待ってから、ソフトウェアが読み取ることができる元のコマンドラインのパイプに置き換えられ、テールは終了しないため、機能しません:-)
マット

回答:


31

これは私のために働いた:

ssh -n user@hostname1 'tail -f /mylogs/log' &
ssh -n user@hostname2 'tail -f /mylogs/log' &

私は通常、複数のgnome-の端末がその中に一つのセッションでそれぞれ、開いている以外うん、それは、私はそれを行う方法です
トム・オコナー

1
複数の独立したSSHセッションを開かずにこれを行う方法はありますか?
tgies

8
しかし、これではを使用してテーリングを停止することはできませんCtrl+C
ソリン14

@sorinでプロセスを終了します。各プロセスをfg;でフォアグラウンドに戻すだけです。それならできctrl+cます。あなたが走っている尾ごとに1回それをします。またはpkill -f ssh、それらすべてを同時にターゲットにすることもできます。
デール・アンダーソン

34

私の優先オプションは、マルチテールを使用することです。私は次のようなものを実行します:

multitail -l 'ssh user@host1 "tail -f /some/log/file"' -l 'ssh user@host2 "tail -f /some/log/file"'

1
ありがとう!リモートホストでsshを介したマルチテールの使用方法の例を探していました!
ノアSussman

マルチテールは、はるかに堅牢なソリューションです。
obfk

当社のウェブサイトには10個の以上のウェブ・ノードを持ち、multitailはエラーで最初の試みに失敗しOperation not permitted、2つの3ウェブノードと、それは大丈夫だ
ヒエウVoの

私もOperation not permitted、手がかりを得る?
エリックアイグナー

7

ファブリックを使用して複数のホストをテーリングできます(必要に応じてgrepの結果も):

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

6

私はそれを使用することも可能かもしれないと考えていました:

ssh -f user@hostname1 "tail -f /var/log/file" > /tmp/somefile &
ssh -f user@hostname2 "tail -f /var/log/file" > /tmp/somefile &

sshの後の-fオプションを使用すると、バックグラウンドで実行する前にパスワードを入力できます。次に、1行の結果を1つのファイルにまとめて実行します。

tail -f /tmp/somefile

出力を表示するために他のテールオプションを使用したい場合は、現在の「テール」コマンドをもう少し制御できます。



5

見てくださいmultitailを。上記の例と同様に、sshのコマンドとして指定すると、1つの画面に複数のログが表示(および簡単にスクロールバックできるようにバッファリング)されることになります。また、色付けも行います。これは、異常を見つけるのに非常に便利です。


2

Parallel sshには、これに対する優れたソリューションがあります。

pssh -t0 -H 'host-01 host-02 host-03 host-04' -P tail -f /var/log/app.log
  • -t0 接続タイムアウトを無効にします。それ以外の場合、psshは接続を閉じました
  • -H '<host>...' コマンドを実行するホストのリストです
  • -P 各ホストの標準出力の印刷を有効にすることです
  • tail -f /var/log/app.log リモートシェルで実行できる任意のコマンドを指定できます


1

ただ奇妙な解決策ですが、それは動作します!:

画面1

ssh user@hostname1 "tail -f /var/log/file" > /dev/pts/6

画面2

ssh user@hostname2 "tail -f /var/log/file" > /dev/pts/6

これは機能し、/ dev / pts / 6ターミナルに行を出力します(自分のターミナルを見つけるために:execute: who am i そして、それを表示します。)
Olivier Dulac

1

dbitailをチェックアウトできます。

私が作成したJavaツール。SSHを使用してローカルおよびリモートのログファイルを読み取ることができます。使い方はとても簡単です。

その他の説明:https : //github.com/pschweitz/DBITail/wiki

Javaランタイム内で実行可能なネイティブjarリリースのオペレーティングシステムに対応するバージョンをダウンロードするだけです(java 8_40以降が必要です)。

https://github.com/pschweitz/DBITail/releases

あなたは完全なドキュメントを見つけることができます(埋め込みとI Githubのページも)

フィリップ


0

または、画面を使用して2つの端末を作成し、それらを分割することができます。

ログファイルを末尾にする最初のホストにSSHで接続し、末尾を実行する前に画面に入ります。

次に、このホスト上のファイルを末尾にします。

Ctrl + A、cは新しい画面またはウィンドウを作成します。この新しいウィンドウから2番目のホストにsshし、そこにファイルをテールします。

分割画面を作成します

CTRL + A、SHIFT + S、これにより、現在のシェルが上部にあり、下部が空の分割画面が作成されます。下の部分に切り替えて、その中に最初の画面を配置するには、

Ctrl + A、Tab、これにより、下部に移動します。ここで、最初のSSHセッションをこの領域に持ち込みます。

Ctrl + A、 "(引用符)を押し、最初のセッションを選択してEnterキーを押します。

私はこれが多くの体操のように見えるかもしれないことを知っています、そして、それはあなたがそれを数回使用すればそれに慣れるでしょう。

以下は、画面のコマンドに関する非常に優れたチュートリアルまたはクイックリファレンスです。 。http //www.pixelbeat.org/lkdb/screen.html

さらに、.screenrcファイルを作成して、最初に画面に入ったときに説明した内容の多くを自動化することができます。

これに関するもう1つの良い点は、セッションを閉じて別の場所で再開できることです。たとえば、あなたは仕事をしていて、監視を続けています。ログアウトせずにセッションを終了し、帰宅したときや別の場所に戻ったときに再開できます。


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