Cum să utilizați comanda timedatectl pe Linux

Publicat: 2022-06-16
Mai multe ceasuri de perete se înghesuie, toate indicând ore diferite.
POR666/Shutterstock.com

Comanda Linux timedatectl vă permite să vă setați ora, data și fusul orar pentru ceasul sistemului și ceasul în timp real. Acordați un moment și vă vom arăta cum funcționează totul.

Totul este relativ

Tratamentul timpului de către computerul tău este unul dintre acele lucruri la care te-ai putea aștepta să fie destul de simplu. Cel puțin până începi să te uiți la el.

Ce este epoca Unix și cum funcționează timpul Unix?
RELATE Ce este epoca Unix și cum funcționează timpul Unix?

Ceasul sistemului Linux numără numărul de secunde de la epoca Unix. Acesta a fost la 00:00:00 pe 1 ianuarie 1970, UTC. UTC înseamnă timp universal coordonat, dar se spune de obicei ca timp universal coordonat sau doar timp universal. Acesta este standardul de timp prin care lumea gestionează și reglează timpul. Diferite fusuri orare aplică o compensare la UTC pentru a obține ora lor locală. Unele fusuri orare sunt înaintea UTC, iar altele sunt în spatele acestuia.

Ceasul de sistem al computerelor Linux este bazat pe software. Evident, nu poate rula când computerul este oprit. Un alt ceas, un ceas în timp real bazat pe hardware cu baterie, poate rula atunci când computerul este oprit. Scopul său este de a spune ceasului sistemului cât este ceasul de fiecare dată când pornește Linux. Cu excepția cazului în care este posibil accesul la un server NTP (Network Time Protocol).

Serverele NTP sunt servere care furnizează informații exacte de timp computerelor care le solicită. Dacă porniți computerul sau laptopul și nu există acces la internet - sau nu a fost configurat pentru a utiliza servere NTP - ceasul în timp real este folosit pentru a amorsa ceasul sistemului în loc de un server NTP.

Publicitate

Ceasul sistemului este întotdeauna în UTC. Orice aplicație care trebuie să obțină ora locală trebuie să:

  • Accesați ceasul sistemului și obțineți UTC
  • Aflați în ce fus orar se află și aplicați offset-ul corect
  • Luați în considerare dacă ora de vară este în vigoare

Conversia de la UTC la ora locală se face de aplicație, nu de ceasul sistemului. Sau, mai precis, conversia este efectuată de bibliotecile de timp și date la care este legată aplicația. De aceea este vital ca computerul să știe ce fus orar este, ce oră UTC este, câte secunde au trecut de la epoca Unix și dacă ora de vară este în vigoare.

De ce sistemul Linux este încă dezbinat după toți acești ani
LEGATE De ce systemd-ul Linux este încă divizor după toți acești ani

În distribuțiile Linux bazate pe systemd, folosim comanda timedatectl pentru a vedea sau modifica acele setări și valori.

Noțiuni introductive cu timedatectl

Pentru a vedea datele curente și ora și alte valori, utilizați comanda timedatectl cu operatorul de status .

 starea timedatectl 

Ieșirea din comanda timedatectl folosind operatorul de stare

De fapt, puteți renunța la starea și veți obține în continuare aceeași ieșire.

 timedatectl 

Ieșirea din comanda timedatectl fără operator

Ambele seturi de ieșire arată:

  • Ora locală : ora pe care computerul crede că este, în funcție de fusul său orar.
  • Ora universală : ora UTC.
  • RTC Time : ora folosită de ceasul în timp real. De obicei, acesta este UTC.
  • Fus orar : Informații referitoare la fusul orar configurat.
  • Ceas sistem sincronizat : dacă ceasul sistemului este sincronizat cu un server NTP.
  • Serviciu NTP : Dacă serviciul NTP al computerului este activ.
  • RTC în TZ local : dacă ceasul în timp real folosește ora locală în loc de UTC.

Puteți vedea câte fusuri orare acceptă comanda timedatectl tastând:

 timedatectl list-timezones | wc -l 

Numărarea fusurilor orare timedatectl

Publicitate

Este mult mai mult decât există fusuri orare în lume. Dacă trimitem ieșirea în grep și filtram intrările pentru „America” și le introducem în less , putem derula printr-o listă mai ușor de gestionat.

 timedatectl list-timezones | grep "America/" | Mai puțin 

Filtrarea fusurilor orare americane cu grep

Pe măsură ce revizuiți această listă, veți vedea că „America” are sensul său cel mai larg posibil. Al doilea lucru pe care îl veți observa este că majoritatea intrărilor nu sunt fusuri orare reale.

Lista de fus orar „american” în mai puțin

Setarea fusului orar

Dacă vă uitați prin lista nefiltrată de fusuri orare acceptate de timedatectl , veți vedea locuri, precum și fusuri orare. Pentru a seta un fus orar, îl puteți specifica după nume, cum ar fi EST sau GMT, sau puteți alege o locație în același fus orar ca și dvs., cum ar fi Londra sau New York.

Resetarea fusului orar nu este ceva pe care îl veți face des, dar poate v-ați mutat acasă sau lucrați pentru o perioadă și doriți să vă localizați laptopul. Dacă trebuie să vă resetați fusul orar, alegeți o locație din fusul orar pe care doriți să-l utilizați.

Vom seta acest computer la ora de munte, care este același fus orar cu Edmonton. Vom vedea apoi cum s-au schimbat setările.

 timedatectl set-timezone „America/Edmonton”
 timedatectl 

Noi setări de fus orar și oră

Fusul nostru orar a fost schimbat, ora noastră locală s-a modificat și decalajul nostru față de UTC a crescut.

LEGATE: Cum să utilizați pipe pe Linux

Setarea manuală a orei și datei

Deși setarea manuală a orei și a datei este posibilă, de obicei nu va fi nevoie. Utilizarea sincronizării orei și a NTP este modalitatea preferată de a păstra exact ora și data computerului. Dacă încercați să schimbați data sau ora computerelor, probabil că veți primi o eroare, care vă va spune că sincronizarea orei este în uz.

 timedatectl set-time 10:30:00 

Mesaj de eroare deoarece sincronizarea orei este în vigoare

Publicitate

Utilizați această comandă pentru a opri serviciul de sincronizare a orei:

 sudo systemctl stop systemd-timesyncd.service

Puteți seta ora, data sau ambele utilizând operatorul timedatectl set-time. datele sunt în ordinea an-lună-zi AAAA-LL-ZZ, iar timpul este în ordinea ore-minute-secunde HH:MM:SS. Vom seta ora și data cu această comandă:

 timedatectl set-time "2022-01-30 10:30:00"

Apoi vom verifica dacă modificările au avut loc, folosind timedatectl .

 timedatectl 

Setarea manuală a orei și datei

Data și ora s-au schimbat. De asemenea, rețineți că computerul folosește o oră UTC falsă. De asemenea, suntem informați că ceasul sistemului nu este sincronizat și serviciul NTP este inactiv.

Dacă aveți acces la internet, de îndată ce restabiliți serviciul de sincronizare a orei, ora este preluată și toate detaliile sunt resetate corect.

 sudo systemctl start systemd-timesyncd.service
 timedatectl 

Repornirea serviciului NTP și restabilirea valorilor de timp corecte

RTC: UTC sau LTZ?

Este posibil să aveți ceasul în timp real setat la ora fusului orar local în loc de UTC - posibil, dar nerecomandabil. Dacă faceți modificarea, veți vedea un avertisment despre efectele îngrozitoare pe care aceasta le poate avea asupra sistemului dvs. în viitor.

Publicitate

Motivul pentru care vă arată această metodă este că ați putea întâlni o mașină în care au probleme ciudate cu setările de timp. Iată cum să setați ceasul în timp real înapoi la UTC.

Mai întâi, va trebui să-l setăm pe fusul orar local.

 timedatectl set-local-rtc 1

Apoi vom cere starea lui timedatectl .

 timedatectl 

Setarea ceasului în timp real la fusul orar local și avertismentul care îl însoțește

Cred că și-au clarificat sentimentele.

Pentru a restabili ceasul în timp real la UTC, utilizați această comandă:

 timedatectl set-local-rtc 0

Setează-l și uită-l

Cu excepția cazului în care ați făcut o eroare în timpul instalării distribuției Linux sau vă mutați, de obicei nu există niciun motiv pentru a modifica setările sistemului și ceasurile în timp real.

Publicitate

Setați ceasul sistemului la fusul dvs. orar, ceasul în timp real la UTC și asigurați-vă că sistemul interogează un server de protocol de timp din rețea. Aceasta este starea implicită după majoritatea instalărilor.

Dacă sunt toate setate, sistemele de timp ale computerului dvs. se vor îngriji singure.

LEGATE: Cum să sincronizezi ora serverului Linux cu serverele de timp în rețea (NTP)