Documentation for a newer release is available. View Latest

Konfiguration av datum och tid

Moderna operativsystem skiljer mellan följande två typer av klockor:

  • En realtidsklocka (RTC, Real-Time Clock), vanligen benämnd som en hårdvaruklocka, (vanligtvis en integrerad krets på moderkortet) som är helt oberoende av det aktuella tillståndet för operativsystemet och går även när datorn är avstängd.

  • En systemklocka även känd som programvaruklocka, som hanteras utav kärnan och dess initiala värde baseras på realtidsklockan. När väl systemet startats och systemklockan initierats är programvaruklockan helt oberoende av realtidsklockan.

Systemtiden hålls alltid i Coordinated Universal Time (UTC) och konverteras i program till lokaltiden vid behov. Lokaltid är den faktiska tiden i ens aktuella tidszon, och tar hänsyn till sommartid (DST). Realtidsklockan kan antingen använda UTC eller lokaltid. UTC rekommenderas.

Fedora 32 erbjuder tre kommandoradsverktyg som kan användas för att konfigurera och visa information om systemets datum och tid: verktyget timedatectl, vilket är nytt i Fedora 32 och är en del av systemd; det traditionella kommandot date och verktyget hwclock för att komma åt hårdvaruklockan.

Att använda kommandot timedatectl

Verktyget timedatectl distribueras som en del av system- och tjänstehanteraren systemd och gör att man kan granska och ändra konfigurationen av systemklockan. Man kan använda detta verktyg för att ändra det aktuella datumet och den aktuella tiden, ställa in tidszonen eller aktivera automatisk synkronisering av systemklockan med en fjärrserver.

För information om hur man visar det aktuella datumet och den aktuella tiden, se även Att använda kommandot date.

Att visa det aktuella datumet och den aktuella tiden

För att visa aktuellt datum och tid tillsammans med detaljerad information om konfigurationen av systemet och hårdvaruklockan, kör kommandot timedatectl utan några ytterligare kommandoradsflaggor:

timedatectl

Detta visar den lokala och universella tiden, den nu valda tidszonen, statusen för konfiguration av nätverkstidsprotokollet (NTP) ocy ytterligare information relaterat till sommartid.

Example 1. Att visa det aktuella datumet och den aktuella tiden

Följande är en exempelutmatning från kommandot timedatectl på ett system som inte använder NTP för att synkronisera systemklockan med en fjärrserver:

$ timedatectl
               Local time: tis 2022-07-12 10:30:56 CEST
           Universal time: tis 2022-07-12 08:30:56 UTC
                 RTC time: tis 2022-07-12 08:30:56
                Time zone: Europe/Stockholm (CEST, +0200)
System clock synchronized: yes
              NTP service: inactive
          RTC in local TZ: no

Att ändra aktuell tid

För att ändra den aktuella tiden, skriv följande vid en skalprompt som root:

timedatectl [option] set-time HH:MM:SS

Ersätt HH med en timme, MM med en minut och SS med en sekund, allt skrivet med två siffror.

Detta kommando uppdaterar både systemtiden och hårdvaruklockan. Restultatet är snarlikt att använda de båda kommandona date --set och hwclock --systohhc.

Kommandot kommer misslyckas om en `NTP`tjänst är aktiverad. Se Att synkronisera systemklockan med en fjärrserver för att tillfälligt avaktivera tjänsten.

Example 2. Att ändra aktuell tid

För att ändra aktuell tid till 23:26, kör följande kommando som root:

~]# timedatectl set-time 23:26:00

Som standard konfigureras systemet till att använda UTC. För att konfigurera systemet till att hålla klockan i den lokala tiden, kör kommandot timedatectl med argumentet set-local-rtc som root:

timedatectl set-local-rtc boolean

För att konfigurera systemet till att hålla klockan i den lokala tiden, ersätt boolean med yes (eller, alternativt, y, true, t eller 1). För att konfigurera systemet till att använda UTC, ersätt boolean med no (eller, alternativt, n, false, f eller 0). Standardalternativet är no.

Att byta aktuellt datum

För att ändra det aktuella datumet, skriv följande vid en skalprompt som root:

timedatectl set-time ÅÅÅÅ-MM-DD

Ersätt ÅÅÅÅ med året med fyra siffror, MM med en tvåsiffrig månad och DD med en tvåsiffrig dag i månaden.

Observera att genom att ändra datumet utan att ange aktuell tid resulterar i att ställa tiden till 00.00.00.

Example 3. Att byta aktuellt datum

För att ändra aktuellt datum till den 2 juni 2013 och behålla den aktuella tiden (23.26), kör följande kommando som root:

~]# timedatectl set-time "2013-06-02 23:26:00"

Att ändra tidszonen

För att räkna upp alla tillgängliga tidszoner, skriv följande vid en skalprompt:

timedatectl list-timezones

För att ändra den använda tidszonen, skriv som root:

timedatectl set-timezone tidszon

Ersätt tidszon med någon av de värden som räknades upp av kommandot timedatectl list-timezones.

Example 4. Att ändra tidszonen

För att identifiera vilken tidszon som är närmast till den aktuella platsen, använd kommandot timedatectl med kommandoradsflaggan list-timezones. Till exempel, för att räkna upp alla tillgängliga tidszoner i Europa, skriv:

~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava

För att ändra tidszon till Europe/Stockholm, skriv som root:

~]# timedatectl set-timezone Europe/Stockholm

Att synkronisera systemklockan med en fjärrserver

Till skillnad mot de manuella justeringarna som beskrivs i det föregående avsnittet gör kommandot timedatectl även att man kan aktivera automatisk synkronisering av systemklockan med en grupp av fjärrservrar med protokollet NTP. Att aktivera NTP aktiverar tjänsten chronyd eller ntpd, beroende på vilken av dem som är installerad.

Tjänsten NTP kan aktiveras och avaktiveras med ett kommando enligt följande:

timedatectl set-ntp boolean

För att aktivera att systemet synkroniserar systemklockan med en fjärr-NTP-server, ersätt boolean med yes(standardflaggan). För att avaktivera denna funktion, ersätt boolean mes no.

Example 5. Att synkronisera systemklockan med en fjärrserver

För att aktivera automatisk synkronisering av systemklockan med en fjärrserver, skriv:

~]# timedatectl set-ntp yes

Kommandot kommer misslyckas om ingen NTP-tjänst är installerad. Se Att installera chrony för mer information.

Att använda kommandot date

Verktyget date är tillgängligt på alla Linuxsystem och gör att man kan visa och konfigurera aktuellt datum och aktuell tid. Det används ofta i skript för att visa detaljerad information om systemklockan i ett anpassat format.

För information om hur man ändrar tidszonen eller aktiverar automatisk synkronisering av systemklockan med en fjärrserver, se Att använda kommandot timedatectl.

Att visa det aktuella datumet och den aktuella tiden

För att visa aktuellt datum och aktuell tid, kör kommandot date utan några ytterligare kommandoradsflaggor:

date

Detta visar veckodagen följt av aktuellt datum, lokaltid, förkortad tidszon och år.

Som standard visar kommandot date lokaltiden. För att visa tiden i UTC, kör kommandot med kommandoradsflaggan --utc eller -u:

date --utc

Man kan också anpassa formatet på den visade informationen genom att ge flaggan [option]`+"format"`på kommandoraden:

date +"format"

Ersätt format med en eller flera av de stödda styrsekvenserna så som det illustreras i Att visa det aktuella datumet och den aktuella tiden. Se Vanligen använda styrsekvenser för en lista över de vanligen oftast använda alternativen, eller manualsidan date(1) för en fullständig lista över dessa alternativ.

Table 1. Vanligen använda styrsekvenser
Styrsekvens Beskrivning

%H

Timme i formatet HH (till exampel, 17).

%M

Minut i formatet MM (till exampel, 30).

%S

Sekund i formatet SS (till exampel, 24).

%d

Dag i månaden i formatet DD (till exampel, 16).

%m

Månad i formatet MM (till exampel, 09).

%Y

År i formatet ÅÅÅÅ (till exampel, 2013).

%Z

Tidszonsförkortning (till exampel, CEST).

%F

Fullständigt datum i formatet ÅÅÅÅ-MM-DD (till exampel, 2022-07-14). Detta alternativ är samma som %Y-%m-%d.

%T

Fullständig tid i formatet HH:MM:SS (till exampel, 17:30:24). Detta alternativ är samma som %H:%M:%S

Example 6. Att visa det aktuella datumet och den aktuella tiden

För att visa aktuellt datum och tid lokalt, skriv följande vid en skalprompt:

~]$ date
tor 14 jul 2022 20:59:56 CEST

För att visa aktuellt datum och tid i UTC, skriv följande vid en skalprompt:

~]$ date --utc
tor 14 jul 2022 18:59:56 UTC

För att anpassa utdata från kommandot date, skriv:

~]$ date +"%Y-%m-%d %H:%M"
2022-07-14 20:59

Att ändra aktuell tid

För att ändra aktuell tid, kör kommandot date med flaggan --set eller -s som root:

date --set HH:MM:SS

Ersätt HH med en timme, MM med en minut och SS med en sekund, allt skrivet med två siffror.

Som standard ställer kommandot date klockan till den lokala tiden. För att ställa klockan i i UTC, kör kommandot med kommandoradsflaggan --utc eller -u:

date --set HH:MM:SS --utc
Example 7. Att ändra aktuell tid

För att ändra aktuell tid till 23:26, kör följande kommando som root:

~]# date --set 20:59:56

Att byta aktuellt datum

För att ändra aktuell datum, kör kommandot date med flaggan --set eller -s som root:

date --set ÅÅÅÅ-MM-DD

Ersätt ÅÅÅÅ med året med fyra siffror, MM med en tvåsiffrig månad och DD med en tvåsiffrig dag i månaden.

Observera att genom att ändra datumet utan att ange aktuell tid resulterar i att ställa tiden till 00.00.00.

Example 8. Att byta aktuellt datum

För att ändra aktuellt datum till den 2 juni 2013 och behålla den aktuella tiden (23.26), kör följande kommando som root:

~]# date --set 2022-07-14 20:59:56

Att använda kommandot hwclock

hwclock är ett verktyg för att komma åt hårdvaruklockan, även känd som realtidsklockan (Real Time Clock, RTC). Hårdvaruklockan är oberoende av operativsystemen man använder och fungerar även när maskinen är avstängd. Detta verktyg används för att visa tiden från hårdvaruklockan. hwclock har också funktioner för att kompensera för systematisk avdrift i hårdvaruklockan.

Hårdvaruklockan lagrar värdena på: år, månad, dag, timme, minut och sekund. Den kan inte lagra tidsstandarden, lokaltid eller Coordinated Universal Time (UTC), eller ange sommartiden (Daylight Saving Time, DST).

Verktyget hwclock sparar sina inställningar i filen /etc/adjtime, vilken skapas när man gör sin första ändring, till exempel, när man ställer tiden manuellt eller synkroniserar hårdvaruklockan och systemtiden.

I Fedora 6 kördes kommandot hwclock automatiskt vid varje avstängning eller uppstart av systemet, men det görs inte i Fedora 32. När systemklockan synkroniseras av nätverkstidsprotokollet (Network Time Protocol, NTP) eller precisionstidsprotokollet (Precision Time Protocol, PTP) synkroniserar kärnan automatiskt hårdvaruklockan med systemklockan var 11:e minut.

För detaljer om NTP, se Att konfigurera NTP med sviten chrony och Att konfigurera NTP med ntpd. För information om PTP, se Att konfigurera PTP med ptp4l. För information om att ställa in hårdvaruklockan efter att ha kört ntpdate, se Att konfigurera uppdatering av hårdvaruklockan.

Att visa det aktuella datumet och den aktuella tiden

Att köra hwclock utan några kommandoradsflaggor som användaren root returnerar datum och tid i lokal tid till standard ut.

hwclock

Observera att flaggorna --utc eller hwclock betyder inte att man visar hårdvaruklockans tid i UTC eller lokal tid. Dessa flaggor använd för att ställa in hårdvaruklockan till att ha tiden i endera av dem. Tiden visas alltid i lokal tid. Dessutom, att använda kommandona hwclock --utc eller hwclock --local ändrar inte den lagrade inställning i filen /etc/adjtime. Detta kommando kan vara användbart när man vet att den sparade inställningen i /etc/adjtime är felaktig men man inte vill ändra inställningen. Å andra sidan kan man få missledande information om man använder kommandot på fel sätt. Se manualsidan hwclock(8) för fler detaljer.

Example 9. Att visa det aktuella datumet och den aktuella tiden

För att visa aktuellt datum och tid i den lokala tiden från hårdvaruklockan, kör som root:

~]# hwclock
2022-07-16 10:35:20.843111+02:00

CEST är en tidszonsförkortning och står för Central European Summer Time.

För information om hur man ändrar tidszonen, se Att ändra tidszonen.

Att ställa in datum och tid

Förutom att visa datum och tid kan man manuellt ställa hårdvaruklockan till en specifik tid.

När man behöver ändra hårdvaruklockans datum och tid kan man göra det genom att lägga till flaggorna --set och --date tillsammans med sin speicifikation:

hwclock --set --date "ÅÅÅÅ-mm-dd HH:MM"

Ersätt dd med en dag (ett tvåsiffrigt tal), mm med en månad (ett tvåsiffrigt tal), ÅÅÅÅ med ett år (ett fyrsiffrigt tal), HH med en timma (ett tvåsiffrigt tal), MM med en minut (ett tvåsiffrigt tal).

På samma gång kan man även ställa in hårdvaruklockan till att hålla tiden i antingen UTC eller lokal tid genom att lägga till flaggan --utc respektive --localtime. I så fall sparas UTC eller LOCAL i filen /etc/adjtime.

Example 10. Att ställa hårdvaruklockan till ett specifikt datum och tid

If you want to set the date and time to a specific value, for example, to "21:17, October 21, 2014", and keep the hardware clock in UTC, run the command as root in the following format:

~]# hwclock --set --date "2022-07-18 23:20" --utc

Att synkronisera datum och tid

Man kan synkronisera hårdvaruklockan och den aktuella systemtiden i båda riktningar.

  • Antingen kan man ställa hårdvaruklockan till den aktuella systemtiden genom att använda detta kommando:

    hwclock --systohc

    Observera att om man använder NTP synkroniserar hårdvaruklockan automatiskt med systemklockan var 11 minut, och detta kommando är endast användbart vid uppstart för att få en rimlig initial systemtid.

  • Eller så kan man ställa systemtiden från hårdvaruklockan genom att använda följande kommando:

    hwclock --hctosys

När man synkroniserar hårdvaruklockan och systemtiden kan man också specificera huruvida man vill hålla hårdvaruklockan i lokal tid eller UTC genom atat lägga till flaggan --utc eller --localtime. Likson när man använder --set kommer UTC ellerr LOCAL sparas i filen /etc/adjtime.

Kommandot hwclock --systohc --utc är funktionellt likvärdigt med kommandot timedatectl set-local-rtc false ock kommandot hwclock --systohc --local är ett alternativ till timedatectl set-local-rtc true.

Example 11. Att synkronisera hårdvaruklockan med systemtiden

För att ställa hårdvaruklockan till den aktuella systemtiden och hålla hårdvaruklockan i lokal tid, kör följande kommando som root:

~]# hwclock --systohc --localtime

För att undvika problem med byte av tidszon och sommartid rekommenderas det att hålla hårdvaruklockan till UTC. Det visade sättet Att synkronisera hårdvaruklockan med systemtiden är användbart, till exempel, i lägen med flervalsstart med ett Windows-system, vilket antar att hårdvaruklockan kör i lokal tid som standard, och då även alla andra system behöver anpassa sig till det genom att använda lokal tid. Det kan även behövas med en virtuell maskin; om den virtuella hårdvaruklockan som tillhandahålls av värden kör i lokal tid behöver gästsystem konfigureras att också använda lokal tid.

Ytterligare resurser

För mer information om hur man konfigurerar datum och tid i Fedora 32, se resurserna listade nedan.

Installerad dokumentation
  • timedatectl(1) — Manualsidan för kommandoradsverktyget timedatectl dokumenterar hur detta verktyg kan användas för att fråga om och ändra systemklockan och dess inställningar.

  • date(1) — Manualsidan för kommandot date ger en fullständig lista över kommandoradsargument som stödjs.

  • hwclock(8) — Manualsidan för kommandot date ger en fullständig lista över kommandoradsargument som stödjs.

Se även