GNU/Linux >> Linux Esercitazione >  >> Linux

File di registro di coda su più macchine su ssh

Quello che vedi è l'effetto di un buffer stdout standard in grep fornito da Glibc. La soluzione migliore è disabilitarlo usando --line-buffered (GNU grep, non sono sicuro di quali altre implementazioni potrebbero supportarlo o qualcosa di simile).

Quanto al perché questo accade solo in alcuni casi:

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

esegue l'intero comando tra virgolette sul server, quindi grep attende di riempire il proprio buffer.

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

esegue grep sulla tua macchina locale sull'output tail inviato attraverso il canale ssh.

La parte fondamentale qui è che grep regola il suo comportamento a seconda che sia stdin è un terminale o no. Quando esegui ssh -t , il comando remoto è in esecuzione con un terminale di controllo e quindi il grep remoto si comporta come quello locale.


dai un'occhiata a questo:multitail

MultiTail ti consente di monitorare i file di registro e l'output dei comandi in più finestre in un terminale, colorare, filtrare e unire.

Per accodare i log in più server utilizzare:

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

Linux
  1. Comandi di accesso ai file in Linux:trova, ordina, testa, coda

  2. Come grep \n nel file

  3. sintassi del file di configurazione logrotate:sono possibili più voci jolly?

  4. Copia file di grandi dimensioni su più macchine su una LAN

  5. SSH - Come includere il comando -t nel file ~/.ssh/config

Comando coda di Linux

SSHFS:montaggio di un file system remoto su SSH

Eseguire un file di script su Ssh tramite Sudo?

comando Linux grep

3 metodi per visualizzare l'output di coda -f di più file di registro in un terminale

Come fare in modo che ssh acceda come l'utente giusto?