Tempo tra le zecche tra oggi e domani?


2

C'è un modo semplice per determinare l'ora in tick, usando la data tra ora e qualche ora domani.

linux 

Ho bisogno di questo per alimentare l'RTC e riattivare il computer dalla modalità di sospensione.

1
Quanto dura un segno di spunta?
— Benjamin Barenblat,

1
@BenjaminBarenblat - Dipende interamente dal sistema temporale utilizzato dal sistema operativo.
— Ramhound,


Pensavo che il tempo in secondi fosse sufficiente per una veglia RTC? Sei sicuro di averne bisogno nelle zecche?
— Jan Fabry,

Risposte:


2

In cima alla mia testa - Guarderei la definizione UNIX di "Epoch Time" , capirei i tempi di inizio e fine dell'epoca di interesse, sottrarre e quindi ridimensionarlo a qualunque cosa.

Ora, sulla tua domanda specifica sull'uso del comando DATE (1), la pagina man UNIX per DATE (1) nel Manuale dei comandi generali di BSD ha questo esempio:

Finalmente il comando:

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

può essere utilizzato per analizzare l'output dalla data ed esprimerlo in Epoch time.

Sul mio sistema OSX, ottengo:

whmcclos@mbp:~
[3] date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"
1391275286

Il date -r secondscomando si rivelerà probabilmente utile per i controlli di integrità con i valori di tempo di epoca calcolati:

whmcclos@mbp:~
[5] date -r 1391275286
Sat Feb  1 09:21:26 PST 2014

Ecco un altro approccio che potrebbe funzionare per te ...

Un'altra possibile implementazione per realizzare ciò che si sta tentando di fare sarebbe con il atcomando UNIX , supponendo che questo tipo di lavori in background vengano eseguiti mentre il sapore di xNIX è "inattivo". Sul mio sistema OSX sembra che i comandi specificati con il atcomando vengano eseguiti anche mentre OSX è "addormentato" - Ho "power nap" abilitato, se questo ha qualcosa a che fare con esso, ma offerto per te considerazione:

Innanzitutto, su OSX, il atcomando è disabilitato di default, quindi per prima cosa l'ho abilitato secondo la pagina man ATRUN (8) come segue:

Execute the following command as root to enable at run:

    launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Quindi, ho fatto un test del sonno come segue:

[61] date
Sat Feb  1 11:10:17 PST 2014
whmcclos@mbp:~
[62] at 11:11am today
touch $HOME/created-at-11:11am
job 9 at Sat Feb  1 11:11:00 2014
whmcclos@mbp:~
[63] date
Sat Feb  1 11:10:40 PST 2014

a questo punto, ho messo il mio laptop OSX a dormire, sono andato in cucina e ho fatto un'insalata, sono tornato ed ecco i risultati:

whmcclos@mbp:~
[64] echo "awakened now"; date
awakened now
Sat Feb  1 11:15:59 PST 2014
whmcclos@mbp:~
[65] ls -l ~/created-at-11\:11am
-rw-r--r--+ 1 whmcclos staff 0 Feb  1 11:11 /Users/whmcclos/created-at-11:11am

Quindi, potrebbe essere possibile che l'implementazione del tuo particolare atcomando permetta ciò che stai cercando di fare.


4

Devi stare molto attento quando usi le strutture temporali del kernel (tick e jiffies dovevano essere usati solo dallo scheduler per i processi multitasking e kernel interni).

Linux usa jiffies, non tick (Windows, Unix e BSD usano tick) e la quantità di tempo varia a seconda dell'architettura. Su una piattaforma x86 o AMD64, Linux ha 100 Jiffies al secondo (per impostazione predefinita, questo può essere modificato). Inoltre, non vi è alcuna garanzia che un Jiffy sia esattamente 10ms, che vari fattori possano cambiarlo un po 'ogni volta, e alla fine questo può aggiungere una differenza significativa.

Sempre più complicati, gli ultimi kernel sono senza tick, i loro kernel non si "svegliano" a intervalli regolari per fare il multitasking e tutto il resto. Invece ogni volta che viene eseguito un "risveglio", il kernel capisce quando deve svegliarsi successivamente e pianifica un timer di interruzione per attivarsi in quel momento. Su questi sistemi non esiste un tick o un jiffy con un'allocazione temporale costante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.