Mit diesem Gnu Date-Befehl kann ich Millisekunden auf folgende Weise abrufen:
date +%M:%S.%N;
aber dieser befehl funktioniert nicht auf solaris ... irgendwelche ideen?
Dieses "Shell-Skript" sollte Millisekunden anzeigen:
#!/bin/ksh
if [ ! -x /var/tmp/time_ms ]
then
cat > /tmp/time_ms.c << %
#include <sys/time.h>
main()
{
struct timeval tv;
gettimeofday(&tv,(void*)0);
printf("%d.%d\n",tv.tv_sec,tv.tv_usec/1000);
}
%
PATH=$PATH:/usr/sfw gcc /tmp/time_ms.c -o /var/tmp/time_ms
fi
/var/tmp/time_ms
Natürlich können Sie time_ms in Ihrem PATH verschieben und direkt nach dem ersten Lauf aufrufen. Das wird eine schnellere Lösung als Gnu Date oder irgendein Perl / Was auch immer-Skript liefern.
Die wahrscheinlichste Erklärung ist, dass Solaris kein GNU-Datum verwendet oder nicht die neueste Version hat. In der Solaris-Manpage für Datum wird die
%N
Formatierungsoption nicht erwähnt . Das GNU-Dokument coreutils für die Zeitkonvertierung gibt andate
, dass%N
es sich um eine GNU-Erweiterung handelt (oh, es sind Nanosekunden, keine Millisekunden).Wenn Sie die Millisekunden benötigen, ist es am besten, die neuesten GNU-Coreutils herunterzuladen und unter zu installieren
/usr/local
(oder/opt/local
wenn Sie es vorziehen). Um die richtige Version von zu erhaltendate
, konfigurieren Sie Ihre entwederPATH
so, dass sie/usr/local/bin
vorher kommt,/usr/bin
oder verwenden Sie einen vollständigen Pfad zu/usr/local/bin/date
in Ihrem Skript.quelle
coreutils
in Ihrem Home-Verzeichnis installieren können . Sie können auch Aaron Digullas Perl-Vorschlag ausprobieren.type -a date
?./configure --prefix=/home/myuser
. Coreutils Dateien installiert wurden inbin
,lib
undshare
Unterverzeichnisse unter meinem Home - Verzeichnis.Wenn Sie die Zeit messen, die ein Teil des Skripts benötigt, können Sie diesen Teil des Skripts in eine Funktion einfügen und aufrufen
time myfunction
. Sie können dastimes
eingebaute Element auch vor und nach dem Abschnitt aufrufen, für den Sie eine Zeitangabe festlegen möchten, aber das Rechnen selbst ist ein bisschen mühsam.quelle
Ergebnis: 15.07.2014 16: 10: 01.260
quelle
Perl ist fast überall. Verwenden:
Wenn Sie wirklich Millisekundengenauigkeit benötigen, probieren Sie das
Time:HiRes
Modul aus .[EDIT] Kompilieren Sie alternativ ein kleines C-Programm, das
gettimeofday()
das Ergebnis aufruft und druckt.quelle
time
Befehl für diese Angelegenheit.