¿Cómo redirigir la salida estándar a múltiples archivos de registro? Lo siguiente no funciona:
some_command 1> output_log_1 output_log_2 2>&1
linux
io-redirection
tee
De dos pisos
fuente
fuente

zsh, puedes usarsome_command >output_log_1 >output_log_2.Respuestas:
Ver
man tee:En consecuencia:
fuente
cmd 2>&1 | tee log1 log2intenté ejecutar como arriba, pero necesito presionar ctrl-c para redirigirlo al segundo archivo de registro. También la salida está impresa en la consola. Quiero que la salida del comando se redirija a los registros pero no en la consola. Cualquier ayuda es apreciada.teecomando escribestdinen los archivos y también enstdout. Si no desea que la salida aparezca en el terminal, debe redirigirla/dev/nullcomo lo haría normalmente.echo test | tee --append file1 file2Digamos que su salida se genera a partir de una función
cmd():Para redirigir la salida
cmda dos archivos, pero no a la consola, puede usar:Esto funcionará para múltiples archivos, dada cualquier tubería de fuente de datos para tee:
Esto también funcionará:
Sin la
/dev/nullredirección, tee enviará salida a stdout además de los archivos especificados.Por ejemplo, si esto se ejecuta desde la consola, verá la salida allí. Ejecutado desde un crontab, la salida mostrará el mensaje de estado que se le envió por correo (también vea la respuesta de Gilles aquí https://unix.stackexchange.com/a/100833/3998 ).
Esto funcionó para mí en bash en Ubuntu 12.04, y se ha verificado en Ubuntu 14.04 usando GNU bash 4.3.11 (1), por lo que debería funcionar en cualquier versión reciente de GNU bash.
fuente
version 4.3.11(1)-release (i686-pc-linux-gnu)) en Ubuntu 14.04.Es una publicación antigua pero la encontré ahora ...
En lugar de redirigir el resultado
> /dev/null, puede redirigirlo al último archivo:O para agregar el resultado:
fuente
-aen tee)Como @jofel mencionó en un comentario debajo de la respuesta, esto se puede hacer de forma nativa en
zsh:o, con expansión de llaves:
Internamente, esto funciona de manera muy similar a las
teerespuestas proporcionadas anteriormente. El shell conecta la salida estándar del comando a un proceso que canaliza a múltiples archivos; por lo tanto, no hay ninguna ventaja técnica de peso para hacerlo de esta manera (pero no parece real bueno). Vea elzshmanual para más.fuente
No se puede comentar, sin embargo, otra forma de expresar
Podría simplificarse a esto, cuando se trata de muchos archivos.
fuente
file1a travésfile8como sus nombres y los que son propensos a solo ejemplo marcadores de posición para los nombres de los archivosNecesitaba un archivo de registro de sesión y otro archivo para todas las sesiones que hice:
echo blabla |tee thisession >>allsessionsfuente
teecomando ya ha sido mencionado.