Existe-t-il une commande shell sous Linux pour obtenir le temps en millisecondes ?
Ceci ne retournera pas le nombre de millisecondes, ceci retournera le nombre de secondes exprimé en millisecondes. Tout sera $SECONDS000
Existe-t-il une commande shell sous Linux pour obtenir le temps en millisecondes ?
Ceci ne retournera pas le nombre de millisecondes, ceci retournera le nombre de secondes exprimé en millisecondes. Tout sera $SECONDS000
@jlliagre : Mais la résolution temporelle réelle est-elle meilleure que 16-17 ms (1/60e de seconde) ou non ?
Perl peut être utilisé pour cela, même sur des plateformes exotiques comme AIX. Exemple :
#!/usr/bin/perl -w
use strict;
use Time::HiRes qw(gettimeofday);
my ($t_sec, $usec) = gettimeofday ();
my $msec= int ($usec/1000);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime ($t_sec);
printf "%04d-%02d-%02d %02d:%02d:%02d %03d\n",
1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec;
Lorsque vous utilisez GNU AWK depuis la version 4.1, vous pouvez charger la bibliothèque de temps et faire :
$ awk '@load "time"; BEGIN{printf "%.6f", gettimeofday()}'
Ceci imprimera l'heure actuelle en secondes depuis 1970-01-01T00:00:00 avec une précision de l'ordre de la sous seconde.
the_time = gettimeofday()
Renvoie le temps en secondes qui s'est écoulé depuis le 1970-01-01 UTC sous la forme d'une valeur à virgule flottante. Si l'heure n'est pas disponible sur cette plate-forme, elle renvoie la valeur suivante-1
et mettreERRNO
. Le temps renvoyé doit être précis à la seconde près mais la précision réelle peut varier en fonction de la plate-forme. Si la norme Cgettimeofday()
est disponible sur cette plateforme, alors il renvoie simplement la valeur. Sinon, si sur MS-Windows, il essaie d'utiliserGetSystemTimeAsFileTime()
.source : <a href="https://www.gnu.org/software/gawk/manual/gawk.html#Extension-Sample-Time" rel="nofollow noreferrer">Manuel GNU awk</a>
Sur les systèmes Linux, la fonction C standard getimeofday()
renvoie l'heure avec une précision de l'ordre de la microseconde.
Bien. Je recommande que nous n'utilisions pas java.util.Date
mais Cette classe est mal conçue et dépassée depuis longtemps. Utilisez plutôt Instant
de java.time, l'API moderne de date et d'heure de Java . Il vous suffit alors date %+s
dans bash et Instant.ofEpochSecond()
en Java.
A imprimer secondes décimales :
start=$(($(date +%s%N)/1000000)) \
&& sleep 2 \
&& end=$(($(date +%s%N)/1000000)) \
&& runtime=$((end - start))
divisor=1000 \
&& foo=$(printf "%s.%s" $(( runtime / divisor )) $(( runtime % divisor ))) \
&& printf "runtime %s\n" $foo # in bash integer cannot cast to float
Sortie : runtime 2.3
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
19 votes
date +%s.%N
vous donnerait des nanosecondes, pouvez-vous travailler avec ça ?1 votes
@Wrikken Ce n'est pas tout à fait portable cependant.
18 votes
Date + "%Y%m%d.%H%M%S%3N" - Généralement j'utilise cette commande pour obtenir la date complète et l'heure unique jusqu'aux milli secondes pour créer les noms de fichiers temporaires dans unix bash script. Si votre système n'est pas capable de supporter les milli secondes, vous pouvez passer aux micro ou nano secondes en utilisant respectivement 3 à 6 et 9.
1 votes
Essayez
date -Ins