/ / tail -f (segue) e xargs - linux, bash

tail -f (segue) e xargs - linux, bash

Perché tail -f non funziona bene con xargs?

Questo comando funziona come previsto, vedo un blocco di testo:

tail /var/log/auth.log|xargs echo

Ma questo comando non mi mostra nulla:

tail -f /var/log/auth.log|xargs echo

Tutti e due tail e tail -f avere uscita Si potrebbe pensare che si tratti di terminatori di riga, ma impostare entrambi su null non ha funzionato:

tail -z -f /var/log/auth.log|xargs -0 echo

risposte:

3 per risposta № 1

Perché tail -f non termina, è ancora in attesa di nuove righe da aggiungere xargs (a meno che non si usi -L o simili) attende fino a quando non ha argomenti "sufficienti" per rendere utile eseguire la riga di comando.

Se la tua intenzione era di eseguire il comando una volta per ogni riga, usa xargs -L1. Vedere man xargs per dettagli:

   -L max-lines
Use at most max-lines nonblank input lines per command line.
Trailing blanks cause an input line to be logically continued
on the next input line.  Implies `-x`.

Attenzione per il comportamento "spazi vuoti finali". Puoi evitarlo usando -I invece di -L1 e specificando un argomento di sostituzione esplicito:

tail -f /var/log/auth.log | xargs -I {} echo {}