Les autres réponses sont probablement suffisantes dans la plupart des cas, mais j'ai pensé ajouter mon grain de sel car j'ai rencontré un problème sur une BusyBox système.
Le système en question ne supportait pas le %N
et n'a pas d'interpréteur Python ou Perl.
Après s'être creusé la tête, nous (merci Dave !) avons trouvé ceci :
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
Il extrait les secondes et les microsecondes de la sortie de adjtimex
(normalement utilisé pour définir les options de l'horloge système) et les imprime sans nouvelles lignes (pour qu'elles soient collées ensemble). Notez que le champ des microsecondes doit être pré-calculé avec des zéros, mais cela n'affecte pas le champ des secondes qui est plus long que six chiffres de toute façon. A partir de cela, il devrait être trivial de convertir les microsecondes en millisecondes.
Si vous avez besoin d'une nouvelle ligne de queue (peut-être parce que c'est plus joli), essayez alors
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' && printf "\n"
Notez également que cela nécessite adjtimex
y awk
pour être disponible. Si ce n'est pas le cas, BusyBox vous permet de les faire pointer localement avec :
ln -s /bin/busybox ./adjtimex
ln -s /bin/busybox ./awk
Et ensuite, appelez ce qui précède comme
./adjtimex | ./awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
Ou bien, bien sûr, vous pouvez les mettre dans votre PATH
EDIT :
Ce qui précède a fonctionné sur mon dispositif BusyBox. Sur Ubuntu j'ai essayé la même chose et j'ai réalisé que adjtimex
a des versions différentes. Sur Ubuntu, cela fonctionne pour afficher le temps en secondes avec des décimales en microsecondes (y compris une nouvelle ligne de fin).
sudo apt-get install adjtimex
adjtimex -p | awk '/raw time:/ { print $6 }'
Je ne ferais pas cela sur Ubuntu cependant. J'utiliserais date +%s%N
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