Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

332
Visualizações
¿Cómo agregar una marca de tiempo mientras se redirige la salida estándar al archivo en Bash?

Tengo un programa (servidor) y estoy buscando una forma (secuencia de comandos) que redirija (o mejor duplique) toda su stdout estándar al archivo y agregue una marca de tiempo para cada entrada.

Investigué un poco y lo más lejos que pude llegar fue gracias a How to add timestamp to STDERR redirection . Redirige stdout pero la marca de tiempo agregada es del momento en que finaliza el script:

 #!/bin/bash ./server | ./predate.sh > log.txt

código de predate.sh :

 #!/bin/bash while read line ; do echo "$(date): ${line}" done

Parece que la salida del servidor se vacía después de salir del programa (sin redirigir, funciona bien). Además, si trato de usar predate.sh en el ejemplo dado en el hilo mencionado, funciona perfectamente. Soy consciente de que sería fácil agregar una marca de tiempo al programa principal, pero prefiero evitar editar su código.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hace poco necesitaba exactamente eso: recibir mensajes de registro en una consola serie (picocom), imprimirlos en una terminal y en un archivo Y anteponer la fecha.

Lo que ahora uso parece algo así. Me gusta esto:

 picocom -b 115200 /dev/tty.usbserial-1a122C | awk '{ print strftime("%s: "), $0; fflush(); }' | tee serial.txt
  • la salida de picocom se canaliza a awk
  • awk antepone la fecha (la opción %s convierte el tiempo a la cantidad de segundos desde 1970-01-01 00:00:00 UTC , o use %c para un formato legible por humanos)
  • fflush() cualquier salida almacenada en búfer en awk
  • que se canaliza a tee que lo desvía a un archivo. (puedes encontrar algunas cosas sobre tee aquí )
over 4 years ago · Santiago Trujillo Relatório

0

más útiles ts

La fecha y la hora absolutas son las predeterminadas:

 $ sudo apt-get install moreutils $ (echo a;sleep 1;echo b;sleep 3;echo c;sleep 2;echo d;sleep 1) | ts | tee myfile $ cat myfile Apr 13 03:10:44 a Apr 13 03:10:45 b Apr 13 03:10:48 c Apr 13 03:10:50 d

o contando desde el comienzo del programa con ts -s :

 $ (echo a; sleep 1; echo b; sleep 3; echo c; sleep 2; echo d; sleep 1) | ts -s 00:00:00 a 00:00:01 b 00:00:04 c 00:00:06 d

o deltas para la evaluación comparativa con ts -i :

 $ (echo a; sleep 1; echo b; sleep 3; echo c; sleep 2; echo d; sleep 1) | ts -i 00:00:00 a 00:00:01 b 00:00:03 c 00:00:02 d $ (echo a; sleep 1; echo b; sleep 3; echo c; sleep 2; echo d; sleep 1) | ts -i '%.s' 0.000010 a 0.983308 b 3.001129 c 2.001120 d

Ver también: ¿Cómo monitorear durante cuánto tiempo cada línea de stdout fue la última línea de salida en Bash para la evaluación comparativa?

Probado en Ubuntu 18.04, moreutils 0.60.

over 4 years ago · Santiago Trujillo Relatório

0

Para mí, su código funciona perfectamente bien

Mira esto es lo que probé

prueba.sh

 #!/bin/bash while true; do echo "hello" done

predate.sh

 #!/bin/bash while read line; do echo $(date) ":" $line; done

entonces

 ./test.sh | ./predate.sh

me da

 Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello Tue Jan 14 17:49:47 IST 2014 : hello

Esto se puede redirigir a algún archivo usando ">" o ">>" para agregar

Ver instantánea

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda