Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!