Agregue un archivo, envíelo a la pantalla y redireccione desde stderr todo a la vez, sin tee

Agregue un archivo, envíelo a la pantalla y redireccione desde stderr todo a la vez, sin tee

Estoy ejecutando un time ddcomando en un script de shell y me gustaría enviar los resultados a un archivo e imprimirlo en la pantalla. La línea que estoy ejecutando actualmente es:

(time dd of=$dest_filepath if=$src_filepath bs=$block_size count=$block_count) >> $log_file 2>&1 &

Aunque eso me deja con un archivo vacío y no aparece en la pantalla. ¿Qué necesitaría hacer para hacer las tres cosas?

Tenga en cuenta que estoy ejecutando esto en un sistema integrado con una instalación de Busybox queno incluyeteeentonces esto no es un duplicado deesta pregunta.

Respuesta1

Lo que estás mostrando funciona como se esperaba en mi sistema. ¿Estás seguro de que estás usando bashy no sh? En cualquier caso, probé con dashy con busyboxy shfuncionó allí también. En ausencia de tee, creo que la única solución será cat $logfileuna vez finalizado el comando.

Otra posibilidad sería crear un enlace para busyboxllamar teee intentar ejecutarlo. El busyboxque vino con mi Debian lo admite pero no sé si el tuyo lo hará:

ln -s /bin/busybox /bin/tee

Luego, intenta ejecutar teenormalmente.

Si realmente no puedes conseguirlo tee, tu única otra opción sería algo como esto:

foo=$( ( time dd if="file1" of="file2" bs=12 count=5 ) 2>&1 &)
echo "$foo"
echo "$foo" >> logfile

Respuesta2

Puedes usar el teecomando. Aquí he agrupado los comandos timey ddhe usado el bloque de código para que sean tratados como un solo comando y su salida pueda manejarse fácilmente.

{ time dd of=$dest_filepath if=$src_filepath bs=$block_size count=$block_count; } 2>&1|tee $log_file

Tome nota del ;al final del segundo comando. Esto es obligatorio para que funcionen los bloques de código.

En caso de que no quieras usarlo, teeentonces puedes pensar en esto.

{ time dd of=$dest_filepath if=$src_filepath bs=$block_size count=$block_count; } 2>&1 &> $log_file;cat $log_file

información relacionada