Usualmente watch
utilizo la utilidad Linux para ver la salida de un comando repetidamente cada n segundos, como enwatch df -h /some_volume/
Pero parece que no puedo usar watch
una serie de comandos canalizados como:
$ watch ls -ltr|tail -n 1
Si hago eso, watch
realmente está mirando ls -ltr
y la salida se está pasando a la tail -n 1
que no sale nada.
Si intento esto:
$ watch (ls -ltr|tail -n 1)
yo obtengo
$ watch: syntax error near unexpected token `ls'
Y cualquiera de los siguientes falla alguna razón u otra:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
Y finalmente si haces esto:
$ watch echo $(ls -ltr|tail -n 1)
No veo ningún cambio en la salida en el intervalo dado porque el comando dentro $()
se ejecuta solo una vez y la cadena de salida resultante siempre se imprime ("vigilada") como literal.
Entonces, ¿cómo hago que el watch
comando funcione con una cadena de comandos canalizada [aparte de ponerlos dentro de un script]?
man watch
y desplázate hacia abajo para ver ejemplos ...Respuestas:
fuente
watch sh -c 'command | etc'
observar particularmente los enfoques probados en la pregunta.vamos a canalizar y correr en fila.
fuente
-n 1
para?Si desea enumerar todos los archivos en subdirectorios también, puede usar el comando find con la opción exec.
watch
se actualizará cada 30 segundos yfind
buscará todos los archivos * .log en el directorio actual (incluidos los subdirectorios) e imprimirá los nombres de archivo y sus últimas 10 líneas:fuente