Generieren eines Zeitstempels für die Genauigkeit der Verwendung in der Shell (Busybox)

3220
MM01

Ich möchte einen Textzeitstempel in der Unix-Shell mit einer Genauigkeit im Mikrosekundenbereich %Nerstellen, ohne die Datumsoption zu verwenden (ich benutze busybox, ein kleineres Unix-Toolset, das diese Option nicht hat), um die erzeugte Ausgabe vorzustellen. Der Zeitstempel sollte das Format haben "<seconds since epoc>.<microseconds>".

awk -f ./myawkscript.awk < /param | sed 's/$/\[<TIMESTAMP WOULD GO HERE>].' 

Die gewünschte Ausgabe würde also so aussehen:

[1305638345.123456] awk script output 

Ich kann den Epoc leicht genug mit Hilfe von bekommen date +"%s", also meine Frage, gibt es eine Möglichkeit, die Mikrosekunden aus der Schale zu bekommen?

1

2 Antworten auf die Frage

2
grawity
#include <stdio.h> #include <sys/time.h>  int main() { struct timeval t;  if (gettimeofday(&t, NULL) == 0) printf("%d.%06u\n", t.tv_sec, t.tv_usec);  return 0; } 

Kompilieren mit cc -o timestamp timestamp.c

Der Vollständigkeit clock_gettime()halber : Kann Nanosekunden zurückgeben, aber mit einem awkSkript würden Sie diese Genauigkeit sowieso nicht erreichen.

0
glenn jackman

Akzeptiert busybox datedas Feld% N (Nanosekunden)?

time=$(date "+%s.%N") 

Die "Nano-Ness" entfernen

time=$(date "+%s.%N" | cut -c 1-17) 

oder

time=$(date "+%s.%N"); time=$ 
Um die Frage zu zitieren, "ohne die% N-Datumsoption (ich verwende busybox, ein kleineres Unix-Toolset, das diese Option nicht hat)" grawity vor 13 Jahren 2