GNU/Linux >> Znalost Linux >  >> Linux

Soubor protokolu Tail na více počítačích přes ssh

To, co vidíte, je účinek standardní vyrovnávací paměti stdout v grep poskytuje Glibc. Nejlepším řešením je deaktivovat jej pomocí --line-buffered (GNU grep, nejsem si jistý, jaké jiné implementace by jej mohly podporovat nebo něco podobného).

Pokud jde o proč k tomu dochází pouze v některých případech:

ssh server "tail -f /var/log/server.log | grep test"

spustí celý příkaz v uvozovkách na serveru - tedy grep čeká na zaplnění vyrovnávací paměti.

ssh server tail -f /var/log/server.log | grep test

běží grep na vašem lokálním počítači na výstupu tail odeslané přes ssh kanál.

Klíčovou částí zde je, že grep upravuje své chování v závislosti na tom, zda je jeho stdin je terminál nebo ne. Když spustíte ssh -t , dálkový příkaz běží s ovládacím terminálem a tedy dálkovým grep se chová jako váš místní.


podívejte se na toto:multitail

MultiTail vám umožňuje monitorovat protokolové soubory a výstup příkazů ve více oknech v terminálu, vybarvovat, filtrovat a slučovat.

Chcete-li sledovat protokoly na více serverech, použijte:

multitail -l 'ssh [email protected] "tail -f /path/to/log/file"' -l 'ssh [email protected] "tail -f /path/to/log/file"'

Linux
  1. Spuštění souboru skriptu přes Ssh přes Sudo?

  2. Grep And Tail -f?

  3. Jak distribuovat velké stahování na více počítačů?

  1. Linuxový příkaz grep

  2. Příkazy pro přístup k souborům v Linuxu – najdi, seřaď, zamiř, ocas

  3. Jak přimět ssh, aby se přihlásil jako správný uživatel?

  1. Ssh – Běžná vícenásobná připojení Ssh Problém se zpracováním souborů?

  2. Jaký je pohodlný způsob kontroly toho, co se přidává do souboru protokolu v reálném čase?

  3. SSH - Jak zahrnout příkaz -t do souboru ~/.ssh/config