Používám OpenWRT na Arduino YUN a snažím se získat přesné datum v milisekundách (DD/MM/RRRR h:min:sec:ms) získáním času časovým serverem.
 Bohužel date +%N vrátí pouze %N , ale ne nanosekundy. Slyšel jsem +%N není zahrnuto v datu OpenWRT.
Existuje tedy nějaký způsob, jak získat datum (včetně milisekund), jak ho chci?
Přijatá odpověď:
 Na OpenWRT date je busybox , který má omezení, ale toto není striktně jedno z nich. Základním problémem je, že knihovna libc (uClibc) nepodporuje toto rozšíření GNU strftime. (Ačkoli ani glibc, více o tom níže.)
 Měli byste mít lua ve výchozím nastavení, ale to nepomůže bez některých dalších nevýchozích modulů.
 hwclock volá gettimeofday() pro porovnávání/nastavení RTC (hardwarové hodiny), ale nebude mít na výstupu subsekundové rozlišení (přístup k RTC může být dostatečně pomalý, takže stejně nemusí být užitečný). Kromě toho OpenWRT poskytuje pouze staré rdate , který má pouze celosekundové rozlišení.
 Zdá se, že neexistuje žádný přímý způsob, jak získat přesné časové razítko přímo z /proc , nejužitečnější časové razítko je v /proc/timer_list (3. řádek), což je doba provozuschopnosti v nanosekundách (rozlišení bude záviset na platformě).
 Pokud byl váš busybox vytvořen pomocí CONFIG_BUSYBOX_CONFIG_ADJTIMEX set, pak byste měli být schopni použít adjtimex pro čtení hodin jádra (i když si uvědomte, že verze busybox má obě různé argumenty a jiný výstup do standardního adjtimex.
 Normální verze, adjtimex -p , poslední řádek výstupu:
   raw time:  1416419719s 146628us = 1416419719.146628
 Verze Busybox, adjtimex (bez -p !), poslední 3 řádky:
   [...]
   time.tv_sec:  1416420386
   time.tv_usec: 732653
   return value: 0 (clock synchronized)
 Goldilocks's je skvělé řešení, za předpokladu, že máte nastavení OpenWRT cross build (důrazně doporučujeme!).
 Vaše coreutils-date řešení funguje, protože zatímco coreutils si je vědom glibc, není to výhradně glibc. Dodává se s vlastní samostatnou implementací strftime (odvozeno z glibc) a používá to k uzavření (prostřednictvím strftime_case() ) základní strftime tak, aby podporoval různá rozšíření (a jinak se vrátí k verzi uClibc).
 Dokonce ani glibc (až do aktuální verze 2.23) nepodporuje %N , coreutils strftime() odvozené z kanonické verze glibc přidává %N a %:z a několik dalších změn. Variace a opravené verze strftime() přetékají (včetně verzí v bash a gawk).