Operativsystemet Linux håller reda på tre tidsstämplar för varje fil i ditt system. Med dessa tidsstämplar kan du upptäcka när en fil senast uppdaterades. Men vad menar de alla? Och hur hittar du dessa tider för en fil? Är det skillnad när det gäller kataloger?

En förståelse av atime, ctime och mtime kan svara på alla dessa frågor. Det här är de tre tidsstämplarna som Unix-filsystem spårar. Om du någonsin behöver ta reda på detaljer om vad som förändrats och när, läs vidare.

Vilka är de tre Unix-tidsstämplarna?

Varje fil har tre tidsstämplar associerade. Linux lagrar dessa i Unix tidsformat som mäter sekunder sedan epoken. De tre tidsstämplarna kallas vanligtvis atime, ctime och mtime.

De mtime är den vanligaste och ofta den mest användbara. Det står för modifierad tid. Det är den tid då filens innehåll senast skrevs till hårddisken.

Något annorlunda är ctime som står för ändra tid. Den här tidsstämpeln spårar metadataändringar som ägarskap och behörigheter. Det inkluderar att byta namn på en fil - åtminstone i typiska moderna Linux-operativsystem. Men det uppdateras också när filens innehåll ändras, så det är alltid lika uppdaterad som mtime.

instagram viewer

Den tredje tidsstämpeln är en tid, som lagrar den senaste gången någon åtkomst till filen.

Hur tidsstämplar gäller för kataloger

En Linux-katalog är i huvudsak en lista över filerna i den katalogen. Så att skapa en fil i en katalog uppdaterar katalogens mtime. Lista filerna i katalogen med hjälp av ls kommandot uppdaterar till exempel åtkomsttiden. Och som med en fil, om du ändrar behörigheter eller namn på en katalog uppdateras dess ctime.

Vad sägs om skapelsetid?

Det kan överraska dig att lära dig att Linux helt enkelt inte håller koll på skapelsetiden. Du kan initialt anta det ctime står för skapelsestid. På samma sätt kan du tänka på det som en mycket användbar sak att kunna ta reda på.

Många applikationer sparar filer genom att skapa dem från grunden varje gång. Detta skulle göra det missvisande att använda en skapelsetid.

Så här visar du de olika tidsstämplarna

Det enklaste sättet att få tidsstämpelinformation är med de ls kommando. Standard långformat visar detaljer för mtime:

$ datum
Lör 6 mars 16:57:01 GMT 2021
$ echo "hej, värld"> tmp
$ ls -l tmp.txt
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

Du kan visa tiden istället genom att använda -u flagga:

$ datum
Lör 6 mars 16:59:33 GMT 2021
$ katt tmp
Hej världen
$ ls -lu tmp
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp

Den sista raden bekräftar att tiden för denna fil skiljer sig från tidpunkten. Slutligen, använd -c flagga för att visa ctime:

$ datum
Lör 6 mars 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r - r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2

Den här gången bekräftar vi att alla tre gånger är distinkta och korrekta: vi modifierade, öppnade sedan och ändrade sedan filen i den ordningen.

Ett alternativ till ls är statistik kommando. Det här kommandot visar detaljer på låg nivå från filens inod. Det gör det lättare att kontrollera alla tre gånger på en gång. Det kringgår också problemet med det ointuitiva -u flagga. Här är ett exempel på utdata för samma fil:

$ stat tmp2
Fil: 'tmp2'
Storlek: 13 Block: 8 IO Block: 4096 vanlig fil
Enhet: 801h / 2049d Inode: 327688 Länkar: 1
Åtkomst: (0644 / -rw-r - r--) Uid: (1000 / ubuntu) Gid: (1000 / ubuntu)
Åtkomst: 2021-03-06 16: 59: 45.000000000 +0000
Ändra: 2021-03-06 16: 57: 59.000000000 +0000
Ändring: 2021-03-06 17: 02: 43.000000000 +0000

Hur man uppdaterar tidsstämplar

De Rör kommandot ändrar ändringar och åtkomsttider för en fil. Det är också ett bekvämt sätt att skapa en tom fil, vilket den gör om filen inte redan finns:

tryck på tmp

Som standard ställer den in tid och tid till aktuell tid. Du kan ställa in en annan tid med -t flagga:

touch -t 202103061200 tmp

Du kan också bara ställa in mtime eller atime med -m och -a flaggor respektive:

touch -t 202103061300 -m tmp

Observera att ctime alltid uppdateras när vi ställer in atime eller mtime.

Hur man hittar filer baserat på tidsstämplar

De hitta kommando är ett annat verktyg som fungerar på tidsstämplar. Det kan filtrera filer baserat på atime, ctime eller mtime. Till exempel:

hitta. -amin 15

hittar filer som nås för exakt 15 minuter sedan, medan:

hitta. -mtime -2

hittar filer som har ändrats under de senaste två dagarna.

Linux håller reda på varje fil tre gånger

Den vanligaste tidsstämpeln för fil är mtime. Detta är till exempel datum och tid som en fillista visar. Men de andra två tidsstämplarna kan också vara användbara, förutsatt att du förstår vad de hänvisar till. Kom särskilt ihåg att ctime representerar förändra tid, inte skapande tid.

Kommandon som touch och stat är användbara medlemmar i Linux-kommandoradsverktygslådan. Dessa kommandon förbättrar ditt Linux-arbetsflöde genom att du snabbt kan skapa nya filer.

E-post
Linux Commands Reference Cheat Sheet

Detta enkla fuskark hjälper dig att bli bekväm med Linux-kommandoterminalen på nolltid.

Relaterade ämnen
  • Linux
  • Filhantering
  • Linux Distro
Om författaren
Bobby Jack (33 artiklar publicerade)

Bobby är en teknikentusiast som arbetat som programutvecklare under mer än två decennier. Han brinner för spel, arbetar som Recensentredaktör på Switch Player Magazine och är nedsänkt i alla aspekter av onlinepublicering och webbutveckling.

Mer från Bobby Jack

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.