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.