GNU/Linux >> Linux Esercitazione >  >> Linux

Gestione efficace dei fusi orari di Linux (esercitazione dettagliata)

Il cronometraggio sui computer è essenziale per molte ragioni e l'ortografia di ciascuno può richiedere un giorno. Ma a parte gli scherzi, se stai cercando una gestione efficace dei fusi orari di Linux, sei nel posto giusto.

In questo tutorial esplorerai e imparerai come lavorare con date, orari e timestamp in Linux. Alcuni stanno stampando la data e l'ora correnti, calcolando date passate e future, lavorando con i fusi orari e altro ancora.

Continua a leggere e uccidi il cronometraggio come un professionista!

Prerequisiti

Questo tutorial comprende dimostrazioni pratiche. Per seguire, avrai bisogno di quanto segue:

  • Una macchina Linux:questo tutorial utilizza Ubuntu 20.04, ma qualsiasi distribuzione Linux moderna funzionerà.
  • Un editor di testo:se non disponi di un editor di testo preferito, puoi utilizzare nano, che è installato per impostazione predefinita sulla maggior parte delle distribuzioni Linux.

Stampa della data e dell'ora correnti con il date Comando

L'elenco dei motivi per il cronometraggio continua, a seconda delle esigenze del tuo progetto. Ma i motivi più comuni sono i seguenti:

  • I registri di sistema utilizzano i timestamp per catalogare quando si sono verificati gli eventi.
  • Le versioni del software sono spesso legate a date specifiche.
  • Gli strumenti di sicurezza della rete utilizzano l'analisi basata sul tempo per rilevare le anomalie.
  • Gli utenti fanno affidamento su tempi precisi per programmare appuntamenti e riunioni.

Per uno qualsiasi di questi motivi, la prima cosa che potresti voler eseguire è stampare la data e l'ora correnti. E su Linux, puoi svolgere questa attività con i comandi date e awk. Ma per cominciare, esegui prima il comando date.

Esegui il date comando seguente senza parametri per stampare la data e l'ora correnti.

date

Come puoi vedere di seguito, l'output del comando, per impostazione predefinita, include quanto segue:

  • Il giorno della settimana (venerdì )
  • Il giorno numerico del mese (10 )
  • Il nome del mese in formato lungo (venerdì ), e l'anno.
  • La data è seguita dal tempo pieno corrente nel formato 24 ore e dal fuso orario.

Ora, esegui il comando seguente per visualizzare tutte le opzioni disponibili che puoi utilizzare insieme a date comando.

date --help

Stampa della data corrente in diversi formati

Hai visto che il comando date da solo stampa la data e l'ora correnti nel formato completo. Ma in genere, dovrai cambiare il formato in base alle tue esigenze.

La buona notizia è che il comando della data ti consente di stampare la data e l'ora del sistema in diversi formati:questa funzione ti consente di ottenere immagini migliori della data e dell'ora correnti.

1. Eseguire il comando seguente per stampare la data corrente solo in formato numerico (%D).

date "+DATE: %D”

Forse preferisci vedere il fuso orario insieme alla data. In tal caso, aggiungi l'opzione %Z, come nel comando seguente:date “+DATE:%D %Z”

2. Quindi, eseguire il comando seguente per stampare la data corrente nel formato MMM AAAA. L'opzione %b stampa il mese abbreviato (novembre, dicembre, gennaio...), mentre l'opzione %Y stampa l'anno corrente.

date "+DATE: %b %Y"

3. Ora, esegui il comando seguente per stampare la data come il mese lungo (novembre, dicembre...) (%B), GG (%d), AAAA (%Y).

Puoi anche concatenare più opzioni per formattare l'output esattamente come lo desideri.

date "+DATE: %B %d,%Y"

4. Infine, esegui lo stesso comando nel passaggio tre. Ma questa volta, aggiungi le opzioni %I:%M %p per stampare l'ora corrente.

date "+DATE: %B %d,%Y %I:%M %p"

Calcolo e stampa di date future e passate

Nella vita reale, potresti voler calcolare una data futura. Come mai? Forse stai scrivendo uno script per eseguire automaticamente le attività in una data specifica. In tal caso, calcolare le date future utilizzando il --date l'opzione tornerà utile.

1. Esegui il comando seguente per calcolare la data a 40 giorni dalla data corrente. Puoi cambiare i giorni in settimane, mesi, anni, ecc., come preferisci.

date --date='40 days'

Di seguito, puoi vedere la data e l'ora complete calcolate a 40 giorni dalla data corrente.

2. Quindi, esegui lo stesso comando del passaggio uno. Ma questa volta, aggiungi le opzioni ("+%B %d,%Y %I:%M %p") per cambiare il formato di output.

date --date='40 days' "+%B %d,%Y %I:%M %p"

3. Ora, esegui il comando seguente, specificando un numero negativo per calcolare le date nel passato. Il comando seguente calcola la data di un anno fa dalla data corrente.

date --date='-1 year’

L'output seguente mostra la data di un anno nel passato nel formato predefinito completo. Ma se desideri modificare il formato, puoi applicare lo stesso formato che hai utilizzato nel passaggio due.

4. Ora, esegui il comando seguente, utilizzando una combinazione di unità (settimane e giorni) con l'opzione –date. Il comando seguente calcola la data di due settimane e quattro giorni fa dalla data corrente.

date --date='-2 weeks -4 days’

5. Infine, esegui il comando seguente per calcolare la data del martedì successivo.

Puoi anche utilizzare altri formati di data oltre al formato numerico per il --date opzione. Ad esempio, puoi utilizzare nomi di mesi completi, come Tuesday o formati relativi all'ora come tomorrow , next , last ., ecc.

date --date='next Tuesday'

Stampa di date incrementali con uno script Bash

La stampa di date correnti, passate e future funziona correttamente con il comando date. Ma sapevi che puoi anche scrivere uno script Bash per lavorare con fusi orari, date e orari? Ad esempio, incrementando la data per giorno, settimana o mese.

L'incremento delle date è utile quando si lavora con lavori cron che devono essere eseguiti quotidianamente, settimanalmente o mensilmente.

1. Crea uno script Bash denominato date2022.sh con il tuo editor preferito.

2. Aggiungi il codice seguente al file date2022.sh, s salvare il file e chiudere l'editor.

Il codice seguente stampa la data per ogni giorno della settimana, partendo dalla data odierna e terminando con la data del lunedì successivo.

DATE=2022-05-30

for i in {0..6}
do
   NEXT_DATE=$(date +%m-%d-%Y -d "$DATE + $i day")
   echo "$NEXT_DATE"
done

3. Infine, esegui il comando bash sottostante per eseguire lo script date2022.sh

bash date2022.sh

Stampa della data e dell'ora correnti con lo strumento GNU Awk CLI

Finora hai visto come stampare date e orari in diversi formati con il date comando, che è abbastanza buono. Ma avere più modi per manipolare data e ora, sia sul sistema reale che in un file, è sempre meglio.

Qual è l'altro modo? Lo strumento GNU Awk CLI. Awk è un potente strumento di elaborazione del testo che può essere utilizzato per un'ampia gamma di attività. Queste attività possono essere ma non sono limitate all'estrazione di dati dai file di registro e alla manipolazione e analisi dei dati di testo.

Ma prima di poter utilizzare lo strumento GNU Awk CLI, devi prima installarlo sul tuo computer:

1. Esegui il comando apt update di seguito per aggiornare l'indice del pacchetto di sistema.

apt update -y

2. Quindi, esegui il seguente comando apt install per installare lo strumento GNU Awk CLI.

apt install gawk -y

3. Una volta installato, esegui gawk comando a print il giorno della settimana (%A ), mese (%B ), data corrente numerica (%d ) e anno (%Y ) dove le seguenti funzioni:

  • Il strftime la funzione formatta la data e l'ora.
  • La funzione systime restituisce l'ora di sistema corrente in secondi dall'epoca.
gawk 'BEGIN { print strftime("Today is %A, %B %d, %Y.", systime()) }'

Nota come awk ti consente di formattare l'output in modo leggibile.

4. Infine, esegui il comando seguente per calcolare e stampare la data di un mese fa. Il comando seguente utilizza il comando date con un numero negativo (-1) per ottenere il primo giorno del mese precedente.

awk -v previous_month="$(date -d "`date +%Y%m01` -1 month" +%Y-%m-%d)" '{print previous_month}'

Conversione del formato della data in un file

Forse hai un file contenente date in un formato incompatibile con la tua locale corrente. Oppure le date nel file non sono sufficientemente chiare per essere lette dagli esseri umani. In tal caso, considera l'utilizzo dello strumento GNU Awk CLI.

Crea un file con il tuo editor di testo preferito e inserisci le seguenti righe nel file in cui il formato della data non è chiaro. Fornisci al file un nome che ti piace, ma il file CSV si chiama test.csv in questo esempio.

1,ABC,SSS,20-OCT-16,4,1,0,5,0,0,0,0
2,DEF,AAA,20-JUL-16,4,1,0,5,0,0,0,0

Ora, esegui il comando awk di seguito per estrarre e convertire il formato della data in un formato più leggibile dall'uomo di AA-MM-GG. L'opzione -F imposta il separatore di campo come una virgola o un trattino e il comando stampa (printf) la data nel formato desiderato.

awk -F'[,-]' '{ printf "%s|20%02d-%02d-%02d,%s\\n", $3, $6, (match("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",$5)+2)/3, $4, $10 }' test.csv

Come puoi vedere di seguito, il formato della data è ora molto più chiaro.

Hai visto che awk è un potente strumento in grado di eseguire un'ampia gamma di attività, come confrontare la data, aggiungere un campo data a un file, ordinare le date, ecc. Ma questo esula dallo scopo di questo articolo.

Controllo del fuso orario usando il grep Comando

Il controllo del fuso orario corrente non dovrebbe essere una tassa complessa e il comando grep assicura che questa affermazione rimanga vera. Il comando grep è un altro potente strumento di elaborazione del testo che puoi utilizzare per un'ampia gamma di attività.

Alcune attività supportate dal comando grep sono l'estrazione di dati dai file di registro e la manipolazione e l'analisi dei dati di testo. Con queste funzionalità, puoi anche controllare il tuo fuso orario attuale con il comando grep.

Esegui il seguente comando timedatectl da solo per stampare la data, l'ora, il fuso orario e lo stato del servizio NTP correnti sulla tua macchina.

timedatectl

Come puoi vedere di seguito, l'output mostra una manciata di informazioni sulla data, l'ora e il fuso orario correnti. Queste informazioni ti consentono di verificare che il fuso orario corretto sia impostato sulla tua macchina, il che aiuta anche a non avere problemi con la sincronizzazione dell'ora sulla tua rete.

Forse ti piace controllare l'elenco dei fusi orari prima di esplorare di più sul comando grep. In tal caso, eseguire il comando seguente:timedatectl list-timezones

Ora, esegui il comando seguente inviato tramite pipe al comando grep se prevedi di controllare il fuso orario corrente della tua macchina per eseguire quanto segue:

  • Recupera le informazioni su data, ora e fuso orario dal file del kernel Linux (timedatectl ).
  • Cerca e stampa righe di testo che corrispondono a Time zone modello di testo.
timedatectl | grep “Time zone”

Come puoi vedere di seguito, l'output mostra solo il fuso orario corrente impostato sulla tua macchina.

Conclusione

Questo tutorial ti ha guidato attraverso molti esempi pratici di interrogazione di data, ora e fusi orari di Linux. Hai imparato a manipolare il formato di data e ora, a calcolare le date passate e future con il date comando. Hai anche eseguito timedatectl e grep comandi per controllare il fuso orario del tuo sistema.

Ora, perché non scrivere più script per automatizzare attività come il calcolo di date passate e future o la conversione dei formati di data? O forse creare lavori cron per pianificare l'esecuzione dei tuoi script?


Linux
  1. Gestione pacchetti Linux con apt

  2. Tutorial Kali Linux Burp Suite

  3. Linux:ottenere file per la data corrente in Linux?

  4. date Esempi di comandi in Linux

  5. Ottieni l'ora corrente in secondi da Epoch su Linux, Bash

Comando Cal in Linux

Gestione delle partizioni Linux

7 Esempi di comando Date in Linux

Comandi di gestione dei gruppi in Linux

Tutorial passo passo sullo scripting della shell

Esempi di comandi data di Linux