¿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 log2
intenté 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.tee
comando escribestdin
en los archivos y también enstdout
. Si no desea que la salida aparezca en el terminal, debe redirigirla/dev/null
como lo haría normalmente.echo test | tee --append file1 file2
Digamos que su salida se genera a partir de una función
cmd()
:Para redirigir la salida
cmd
a 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/null
redirecció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
-a
en 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
tee
respuestas 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 elzsh
manual 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
file1
a travésfile8
como 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 >>allsessions
fuente
tee
comando ya ha sido mencionado.