Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> sistemi >> Unix >> .

Come trovare differenza di orario in Unix Script

Se hai bisogno di trovare la differenza tra due orari , se differiscono per pochi secondi o per anni , si può fare questo in versione GNU di Unix con il comando "date" . Tuttavia, la procedura non è intuitiva , come il comando date non fornisce direttamente una bandiera o argomento per questa procedura . Inoltre , più versioni del comando date esistono in Unix . Si noti che ciò che funziona nella versione GNU del comando date non funziona con la versione BSD . Unix Epoch

La chiave per risolvere questo problema è capire come il computer tiene in realtà la cognizione del tempo . Un computer Unix memorizza tutte le volte che il numero di secondi trascorsi dalla Unix Epoch . Il Unix Epoch è la mezzanotte del 1 ° gennaio 1970.
Ottenere i secondi dalla Unix Epoch

È possibile ottenere il numero di secondi dalla Unix Epoch a un dato data utilizzando una combinazione di tasti "+ % s" bandiera e il comando - " data" . Digitare quanto segue in una shell per ottenere il numero di secondi dalla Unix Epoch al 11 marzo 2011 :
data

- Data 2011-03-11 + % s

Il risultato sarà : 1299823200 . È possibile utilizzare qualsiasi formato di data-ora che è possibile analizzare con il comando "date" in questo script . È possibile digitare " Data l'uomo " nella vostra shell per leggere tutti i formati di data.
La soluzione

Come si può prendere ogni data o tempo in un formato compatibile con Unix e convertirlo i secondi prima o dopo l' Epoca Unix , è possibile calcolare la differenza tra le due volte sottraendo i risultati di due di questi comandi .

digitare i seguenti comandi nella vostra shell:

d1 = `date - data 2011-03-11 + % s`

d2 = `date - data 2010-05-12 + % s`

echo " $ ( ( ( d1 - d2 ))) secondi differenza "

Nelle prime due righe , il ` carattere non è un segno di citazione . Si tratta di un back -tick . È possibile individuare il carattere a sinistra del tasto "1" su una tastiera statunitense standard.

L'output dovrebbe essere la differenza tra le due volte in pochi secondi . Se è necessario , è possibile convertire questo in minuti , ore, giorni , e così via , dividendo per il numero di secondi in un minuto , minuto in un'ora o di ore in un giorno .
A Script

Come sarebbe un fastidio di digitare i tre comandi lunghi ogni volta, è necessario incapsulare in una sceneggiatura . Aprite il vostro editor di testo preferito e incollare il seguente :

# /usr /bin /env bash

d1 = `date - data 1 $ + % s`

d2 = `date - data di $ 2 + % s`

echo " $ ( ( ( d1 - d2 ))) secondi differenza "

Questo cambia un paio di cose . La riga superiore consente la shell corrente sa che si scrive questo script per usare il linguaggio della shell "bash " . Come si sostituiscono le date dei due comandi di data con il "$ 1" e "$ 2 ", è possibile passare nuove date per lo script ogni volta che lo si esegue . Ancora una volta , nelle prime due righe , si utilizza il back- tick ` , non un solo preventivo.

Salvare lo script con il nome di" timediff.sh " ed eseguire il comando " chmod + x timediff.sh . " nella shell Unix per far sapere che ha permesso di eseguire questo come script

Dopo aver fatto questo , è possibile calcolare la differenza tra due date e gli orari digitando:

. /timediff.sh 2010/09/13 1981/01/14

 

sistemi © www.354353.com