Förstå Linux -filstämplar: mtime, ctime och atime

Förstå Linux -filstämplar: mtime, ctime och atime

Linux -operativsystemet 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 du reda på dessa tider för en fil? Är det någon 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ändrades och när, läs vidare.





Vad är de tre Unix -tidsstämplarna?

Varje fil har tre tidsstämplar associerade med sig. Linux lagrar dessa i Unix tidsformat som mäter sekunder sedan epoken. De tre tidsstämplarna kallas vanligen 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 tid då filens innehåll senast skrevs till hårddisken.

Lite annorlunda är ctime som står för ändra tid . Denna tidsstämpel spårar metadataändringar som ägande och behörigheter. Den inkluderar att byta namn på en fil - åtminstone på typiska moderna Linux -operativsystem. Men den uppdateras också när filens innehåll ändras, så det är alltid lika uppdaterat som mtime.



Den tredje tidsstämpeln är en tid , som lagrar förra gången någon öppnade filen.

kan du använda olika typer av ram

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 kommer att uppdatera katalogens mtime. Lista filer i katalogen med hjälp av ls kommando, till exempel, uppdaterar sin åtkomsttid. Och som med en fil, ändrar en katalogs behörigheter eller namn uppdaterar dess ctime.





Hur är det med skapelsetiden?

Det kan överraska dig att lära dig att Linux helt enkelt inte håller reda på skapelsetiden. Du kan först anta det ctime står för skapelsestid. På samma sätt kan du tänka på 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 att använda en skapelsetid vilseledande.





Hur man visar de olika tidsstämplarna

Det enklaste sättet att få information om tidsstämpel är med de ls kommando . Standard långformat 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 atimen istället med -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 atime. Slutligen, använd -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 gånger är olika och korrekta: vi ändrade, åtkom sedan och ändrade sedan filen i den ordningen.

Ett alternativ till ls är stat kommando. Detta kommando 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 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 åtkomsttider för en fil. Det är också ett bekvämt sätt att skapa en tom fil, vilket den kommer att göra om filen inte redan finns:

vad är ar zone app på android
touch tmp

Som standard kommer det 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 -till 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 verkar på tidsstämplar. Det kan filtrera filer baserat på atime, ctime eller mtime. Till exempel:

find . -amin 15

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

find . -mtime -2

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

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

Den mest refererade filstämpeln är mtime. Detta är till exempel datum och tid som en filförteckning visar. Men de andra två tidsstämplarna kan också vara användbara, förutsatt att du förstår vad de syftar på. Kom ihåg alltid 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 kan skapa nya filer snabbt.

Dela med sig Dela med sig Tweet E-post Linux Commands Reference Cheat Sheet

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

vad är den billigaste matleveransservicen
Läs Nästa Relaterade ämnen
  • Linux
  • Filhantering
  • Linux Distro
Om författaren Bobby Jack(58 artiklar publicerade)

Bobby är en teknikentusiast som arbetade som mjukvaruutvecklare i de flesta av två decennier. Han brinner för spel, jobbar som recensioner -redaktör på Switch Player Magazine och är fördjupad i alla aspekter av online -publicering 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!

Klicka här för att prenumerera