GNU/Linux >> Znalost Linux >  >> Linux

Efektivní správa časových pásem Linuxu (výukový program krok za krokem)

Měření času na počítačích je zásadní z mnoha důvodů a vyhláskování každého může trvat den. Ale žertujeme, pokud hledáte efektivní správu časových pásem Linuxu, jste na správném místě.

V tomto tutoriálu prozkoumáte a naučíte se, jak můžete v Linuxu pracovat s daty, časy a časovými razítky. Některé tisknou aktuální datum a čas, počítají budoucí a minulá data, pracují s časovými pásmy a další.

Čtěte dál a porazte měření času jako profík!

Předpoklady

Tento tutoriál obsahuje praktické ukázky. Chcete-li pokračovat, budete potřebovat následující:

  • Počítač Linux – Tento výukový program používá Ubuntu 20.04, ale bude fungovat jakákoli moderní distribuce Linuxu.
  • Textový editor – Pokud nemáte preferovaný textový editor, můžete použít nano, který je standardně nainstalován ve většině distribucí Linuxu.

Tisk aktuálního data a času s date Příkaz

Seznam důvodů pro měření času pokračuje v závislosti na vašich potřebách pro váš projekt. Nejběžnější důvody jsou však uvedeny níže:

  • Systémové protokoly používají časová razítka ke katalogizaci událostí.
  • Vydání softwaru jsou často vázána na konkrétní data.
  • Nástroje pro zabezpečení sítě využívají k detekci anomálií analýzu založenou na čase.
  • Uživatelé se při plánování schůzek a schůzek spoléhají na přesný čas.

Z některého z těchto důvodů je první věcí, kterou budete chtít provést, vytisknout aktuální datum a čas. A na Linuxu můžete tento úkol provést pomocí příkazů date a awk. Pro začátek ale nejprve spustíte příkaz date.

Spusťte date příkaz níže bez parametrů pro tisk aktuálního data a času.

date

Jak můžete vidět níže, výstup příkazu ve výchozím nastavení obsahuje následující:

  • Den v týdnu (pátek )
  • Číselný den v měsíci (10 )
  • Název měsíce v dlouhém formátu (Pátek ) a rok.
  • Za datem následuje aktuální plný úvazek ve 24hodinovém formátu a časové pásmo.

Nyní spusťte následující příkaz a zobrazte všechny dostupné možnosti, které můžete použít spolu s date příkaz.

date --help

Tisk aktuálního data v různých formátech

Viděli jste, že samotný příkaz datum vytiskne aktuální datum a čas v plném formátu. Obvykle však budete muset změnit formát podle svých potřeb.

Dobrou zprávou je, že příkaz date umožňuje tisknout systémové datum a čas v různých formátech – tato funkce vám umožňuje získat lepší vizuální informace o aktuálním datu a čase.

1. Spusťte níže uvedený příkaz a vytiskněte aktuální datum pouze v číselném formátu (%D).

date "+DATE: %D”

Možná chcete vidět časové pásmo společně s datem. V takovém případě připojte možnost %Z, jako v příkazu níže:date „+DATE:%D %Z“

2. Dále spusťte následující příkaz pro tisk aktuálního data ve formátu MMM RRRR. Možnost %b vytiskne zkrácený měsíc (listopad, prosinec, led…), zatímco možnost %Y vytiskne aktuální rok.

date "+DATE: %b %Y"

3. Nyní spusťte níže uvedený příkaz a vytiskněte datum jako dlouhý měsíc (listopad, prosinec…) (%B), DD (%d), RRRR (%Y).

Můžete také zřetězit dohromady více možností a formátovat výstup přesně tak, jak chcete.

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

4. Nakonec spusťte stejný příkaz v kroku tři. Tentokrát však přidejte možnosti %I:%M %p pro tisk aktuálního času.

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

Výpočet a tisk budoucích a minulých dat

Ve skutečném životě možná budete chtít vypočítat datum, které je v budoucnosti. Proč? Možná píšete skript pro automatické provádění úkolů v určité datum. Pokud ano, výpočet budoucích dat pomocí --date možnost se bude hodit.

1. Spusťte níže uvedený příkaz pro výpočet data 40 dní od aktuálního data. Můžete měnit dny na týdny, měsíce, roky atd., jak chcete.

date --date='40 days'

Níže vidíte vypočítané celé datum a čas 40 dní od aktuálního data.

2. Dále spusťte stejný příkaz jako v prvním kroku. Tentokrát však přidejte možnosti („+%B %d,%Y %I:%M %p“) pro změnu výstupního formátu.

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

3. Nyní spusťte níže uvedený příkaz a zadejte záporné číslo pro výpočet dat v minulosti. Níže uvedený příkaz vypočítá datum před rokem z aktuálního data.

date --date='-1 year’

Níže uvedený výstup zobrazuje datum v roce v minulosti v plném výchozím formátu. Ale pokud chcete změnit formát, můžete použít stejný formát, jaký jste udělali v kroku 2.

4. Nyní spusťte níže uvedený příkaz s použitím kombinace jednotek (týdnů a dnů) s volbou –date. Níže uvedený příkaz vypočítá datum před dvěma týdny a čtyřmi dny z aktuálního data.

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

5. Nakonec spusťte níže uvedený příkaz pro výpočet data příští úterý.

Kromě číselného formátu pro --date můžete použít i jiné formáty data volba. Můžete například použít názvy celých měsíců, například Tuesday , nebo relativní časové formáty jako tomorrow , next , last atd.

date --date='next Tuesday'

Tisk zvyšujících se dat pomocí skriptu Bash

Tisk aktuálního, minulého a budoucího data funguje dobře s příkazem datum. Ale věděli jste, že můžete také napsat Bash skript pro práci s časovými pásmy, daty a časy? Například zvýšením data o den, týden nebo měsíc.

Zvyšování dat je užitečné při práci s úlohami cron, které je třeba spouštět denně, týdně nebo měsíčně.

1. Vytvořte skript Bash s názvem date2022.sh s vaším preferovaným editorem.

2. Přidejte následující kód do souboru date2022.sh, s uložte soubor a zavřete editor.

Níže uvedený kód vytiskne datum pro každý den v týdnu, počínaje dnešním datem a končící následujícím pondělním datem.

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. Nakonec spusťte níže uvedený příkaz bash a spusťte skript date2022.sh

bash date2022.sh

Tisk aktuálního data a času pomocí nástroje GNU Awk CLI Tool

Dosud jste viděli, jak tisknout data a časy v různých formátech pomocí date příkaz, což je dost dobré. Ale mít více způsobů, jak manipulovat s datem a časem, ať už ve skutečném systému nebo v souboru, je vždy lepší.

Jaký je jiný způsob? Nástroj GNU Awk CLI. Awk je výkonný nástroj pro zpracování textu, který lze použít pro širokou škálu úkolů. Tyto úkoly mohou být, ale nejsou omezeny na extrakci dat ze souborů protokolu a manipulaci a analýzu textových dat.

Než však budete moci používat nástroj GNU Awk CLI, musíte jej nejprve nainstalovat do počítače:

1. Spusťte níže uvedený příkaz apt update pro aktualizaci indexu systémových balíčků.

apt update -y

2. Dále spusťte následující příkaz apt install a nainstalujte nástroj GNU Awk CLI.

apt install gawk -y

3. Po instalaci spusťte gawk příkaz na print den v týdnu (%A ), měsíc (%B ), číselné aktuální datum (%d ) a rok (%Y ), kde následující funkce:

  • strftime funkce formátuje datum a čas.
  • Funkce systime vrací aktuální systémový čas v sekundách od Epochy.
gawk 'BEGIN { print strftime("Today is %A, %B %d, %Y.", systime()) }'

Všimněte si, jak vám awk umožňuje formátovat výstup způsobem čitelným pro člověka.

4. Nakonec spusťte níže uvedený příkaz pro výpočet a tisk data před měsícem. Níže uvedený příkaz používá příkaz datum se záporným číslem (-1) k získání prvního dne předchozího měsíce.

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

Převod formátu data v souboru

Možná máte soubor obsahující data ve formátu, který není kompatibilní s vaším aktuálním národním prostředím. Nebo data v souboru nejsou dostatečně jasná, aby je lidé mohli přečíst. Pokud ano, zvažte použití nástroje GNU Awk CLI.

Vytvořte soubor pomocí preferovaného textového editoru a do souboru, kde není jasný formát data, vložte následující řádky. Zadejte název souboru, který se vám líbí, ale soubor CSV se nazývá test.csv v tomto příkladu.

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

Nyní spusťte příkaz awk níže, abyste extrahovali a převedli formát data na formát RR-MM-DD lépe čitelný pro člověka. Volba -F nastaví oddělovač polí jako čárku nebo pomlčku a příkaz vytiskne (printf) datum ve vámi požadovaném formátu.

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

Jak můžete vidět níže, formát data je nyní mnohem jasnější.

Viděli jste, že awk je mocný nástroj, který dokáže provádět širokou škálu úkolů, jako je porovnávání data, přidávání datového pole do souboru, řazení dat atd. Ale to je nad rámec tohoto článku.

Kontrola časového pásma pomocí grep Příkaz

Kontrola aktuálního časového pásma by neměla být složitou daní a příkaz grep zajišťuje, že toto prohlášení zůstane pravdivé. Příkaz grep je další výkonný nástroj pro zpracování textu, který můžete použít pro širokou škálu úkolů.

Některé úlohy, které příkaz grep podporuje, jsou extrahování dat ze souborů protokolu a manipulace a analýza textových dat. Pomocí těchto funkcí můžete také zkontrolovat své aktuální časové pásmo pomocí příkazu grep.

Spuštěním následujícího příkazu timedatectl samostatně vytiskněte aktuální datum, čas, časové pásmo a stav služby NTP na vašem počítači.

timedatectl

Jak můžete vidět níže, výstup zobrazuje několik informací o aktuálním datu, čase a časovém pásmu. Tyto informace vám umožní ověřit, že je na vašem počítači nastaveno správné časové pásmo, což také pomáhá zajistit, že nebudete mít problémy se synchronizací času ve vaší síti.

Možná byste chtěli zkontrolovat seznam časových pásem, než prozkoumáte více o příkazu grep. Pokud ano, spusťte následující příkaz:timedatectl list-timezones

Nyní spusťte níže uvedený příkaz připojený k příkazu grep, pokud plánujete zkontrolovat aktuální časové pásmo vašeho počítače a provést následující:

  • Získejte informace o datu, čase a časovém pásmu ze souboru jádra Linuxu (timedatectl ).
  • Hledejte a tiskněte řádky textu, které odpovídají Time zone textový vzor.
timedatectl | grep “Time zone”

Jak můžete vidět níže, výstup zobrazuje pouze aktuální časové pásmo nastavené na vašem počítači.

Závěr

Tento tutoriál vás provede mnoha praktickými příklady dotazování na datum, čas a časová pásma Linuxu. Naučili jste se manipulovat s formátem data a času, počítat minulá a budoucí data pomocí date příkaz. Spustili jste také timedatectl a grep příkazy ke kontrole časového pásma vašeho systému.

Proč tedy nenapsat více skriptů pro automatizaci úloh, jako je výpočet minulých a budoucích dat nebo převod formátů data? Nebo možná vytvořit úlohy cron pro naplánování provádění vašich skriptů?


Linux
  1. 8 Příklady příkazů rychlého data v Linuxu

  2. Příklady příkazů date v Linuxu

  3. Získejte aktuální čas v sekundách od epochy na Linuxu, Bash

  1. Správa balíků Linux pomocí apt

  2. 8 Linuxových příkazů pro efektivní řízení procesů

  3. Výukový program Kali Linux Burp Suite

  1. Jak zkontrolovat časové pásmo v Linuxu

  2. Linux Date Command Tutorial pro začátečníky (8 příkladů)

  3. Linux – získávání souborů pro aktuální datum v Linuxu?