Operativsystemet Linux håller reda på tre tidsstämplar för varje fil på ditt system. Dessa tidsstämplar gör att du kan upptäcka när en fil senast uppdaterades. Men vad betyder de alla? Och hur får man reda på dessa tider för en fil? Är det någon skillnad när det kommer till kataloger?
En förståelse för 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 ändrades och när, läs vidare.
Vilka är de tre Unix-tidsstämplarna?
Varje fil har tre tidsstämplar kopplade till sig. Linux lagrar dessa i Unix-tidsformatet som mäter sekunder sedan epok. De tre tidsstämplarna kallas vanligtvis för atime, ctime och mtime.
De mtime är den vanligaste och ofta den mest användbara. Det står för ändrad tid. Det är den tidpunkt då filens innehåll senast skrevs till disken.
Lite annorlunda är ctime som står för ändra tid. Denna tidsstämpel spårar metadataändringar som äganderätt och behörigheter. Det inkluderar att byta namn på en fil – åtminstone på typiska moderna Linux-operativsystem. Men den uppdateras också när filens innehåll ändras, så den är alltid lika uppdaterad som mtime.
Den tredje tidsstämpeln är en tid, som lagrar den senaste gången någon fick åtkomst till filen.
Hur tidsstämplar tillämpas på kataloger
En Linux-katalog är i huvudsak en lista över filerna i den katalogen. Så att skapa en fil i en katalog kommer att uppdatera den katalogens mtime. Lista filerna i katalogen med hjälp av ls kommandot uppdaterar till exempel sin åtkomsttid. Och, som med en fil, uppdateras dess ctime om du ändrar en katalogs behörigheter eller namn.
Hur är det med Creation Time?
Det kan förvåna dig att lära dig att Linux helt enkelt inte håller reda på skapelsetiden. Du kan till en början anta det ctime står för skapelsetid. På samma sätt kan du se det som en mycket användbar sak för att kunna ta reda på det.
Många program sparar filer genom att skapa dem från början varje gång. Detta skulle göra användningen av en skapelsetid missvisande.
Hur man ser de olika tidsstämplarna
Det enklaste sättet att få information om tidsstämpeln är med ls kommando. Det långa standardformatet visar detaljer för mtime:
$ date
Sat Mar 6 16:57:01 GMT 2021
$ echo "hello, world" > 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:
$ date
Sat Mar 6 16:59:33 GMT 2021
$ cat tmp
hello, world
$ 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 mtime för denna fil skiljer sig från tiden. Använd slutligen -c flagga för att visa ctime:
$ date
Sat Mar 6 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 tiderna är distinkta och korrekta: vi modifierade, öppnade 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ångerna samtidigt. Det kommer också runt problemet med det ointuitiva -u flagga. Här är ett exempel på utdata för samma fil:
$ stat tmp2
File: `tmp2'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-03-06 16:59:45.000000000 +0000
Modify: 2021-03-06 16:57:59.000000000 +0000
Change: 2021-03-06 17:02:43.000000000 +0000
Hur man uppdaterar tidsstämplar
De Rör kommandot ändrar ändrings- och åtkomsttiderna för en fil. Det är också ett bekvämt sätt att skapa en tom fil, vilket det kommer att göra om filen inte redan finns:
touch tmp
Som standard kommer den att ställa in mtime och atime till den aktuella tiden. Du kan ställa in en annan tid med -t flagga:
touch -t 202103061200 tmp
Du kan också ställa in endast mtime eller atime med -m och -a respektive flaggor:
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 agerar på tidsstämplar. Det kan filtrera filer baserat på atime, ctime eller mtime. Till exempel:
find . -amin 15
hittar filer som du fick åtkomst till för exakt 15 minuter sedan, medan:
find . -mtime -2
hittar filer som ändrats under de senaste två dagarna.
Linux håller reda på varje fil tre gånger
Den vanligaste filens tidsstämpel ä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 syftar på. Kom i synnerhet alltid 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 kommer att förbättra ditt Linux-arbetsflöde genom att du snabbt kan skapa nya filer.
Om författaren
Bobby Jack (65 artiklar publicerade)
Bobby är en teknikentusiast som arbetat som mjukvaruutvecklare under de flesta av två decennier. Han brinner för spel, arbetar som chefredaktör på Switch Player Magazine och är fördjupad 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, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
