Forståelse af Linux -filtidsstempler: mtime, ctime og atime

Forståelse af Linux -filtidsstempler: mtime, ctime og atime

Linux -operativsystemet holder styr på tre tidsstempler for hver fil på dit system. Disse tidsstempler giver dig mulighed for at opdage, hvornår en fil sidst blev opdateret. Men hvad betyder de alle? Og hvordan finder du ud af disse tider for en fil? Er der en forskel, når det kommer til biblioteker?





En forståelse af atime, ctime og mtime kan besvare alle disse spørgsmål. Dette er de tre tidsstempler, som Unix -filsystemer sporer. Hvis du nogensinde har brug for at finde ud af detaljer om, hvad der har ændret sig og hvornår, kan du læse videre.





Hvad er de tre Unix -tidsstempler?

Hver fil har tre tidsstempler tilknyttet. Linux gemmer disse i Unix tidsformat som måler sekunder siden epoken. De tre tidsstempler kaldes almindeligvis atime, ctime og mtime.





Det mtime er den mest almindelige og ofte den mest nyttige. Det står for ændret tid . Det er det tidspunkt, hvor filens indhold sidst blev skrevet til disken.

Lidt anderledes er ctime som står for ændre tid . Dette tidsstempel sporer metadataændringer såsom ejerskab og tilladelser. Det inkluderer omdøbning af en fil - i det mindste på typiske moderne Linux -operativsystemer. Men det opdateres også, når filens indhold ændres, så det er altid lige så opdateret som mtime.



Det tredje tidsstempel er en tid , som gemmer sidste gang nogen har haft adgang til filen.

overførsel af musik fra ipod til itunes

Hvordan tidsstempler gælder for biblioteker

Et Linux -bibliotek er i det væsentlige en liste over filerne i det bibliotek. Så oprettelse af en fil i et bibliotek opdaterer mappens mtime. Liste over filerne i biblioteket ved hjælp af ls kommando, for eksempel, opdaterer sin adgangstid. Og som med en fil opdateres dets ctime ved at ændre et biblioteks tilladelser eller navn.





Hvad med skabelsestiden?

Det kan overraske dig at lære, at Linux simpelthen ikke holder styr på oprettelsestiden. Det kan du i første omgang antage ctime står for skabelsestid. På samme måde kan du tænke på det som en meget nyttig ting at kunne finde ud af.

Mange applikationer gemmer filer ved at oprette dem fra bunden hver gang. Dette ville gøre brug af en oprettelsestid vildledende.





Sådan ses de forskellige tidsstempler

Den enkleste måde at få tidsstempeloplysninger på er med det ls kommando . Standard langformat viser detaljer for 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 i stedet vise atime ved hjælp af -u flag:

$ 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 sidste linje bekræfter, at mtime for denne fil er forskellig fra atime. Til sidst skal du bruge -c flag for at se 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

Denne gang bekræfter vi, at alle tre gange er forskellige og korrekte: vi modificerede, åbnede derefter og ændrede derefter filen i den rækkefølge.

Et alternativ til ls er stat kommando. Denne kommando viser detaljer på lavt niveau fra filens inode. Det gør det lettere at kontrollere alle tre gange på én gang. Det kommer også uden om problemet med det utilsigtede -u flag. Her er et eksempel output til den samme 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

Sådan opdateres tidsstempler

Det røre ved kommando ændrer ændring og adgangstider for en fil. Det er også en bekvem måde at oprette en tom fil, hvilket den vil gøre, hvis filen ikke allerede findes:

kan du sende en sms til mig
touch tmp

Som standard indstiller den mtime og atime til den aktuelle tid. Du kan indstille et andet tidspunkt med -t flag:

touch -t 202103061200 tmp

Du kan også kun indstille mtime eller atime med -m og -til henholdsvis flag:

touch -t 202103061300 -m tmp

Bemærk, at ctime altid opdateres, når vi indstiller atime eller mtime.

Sådan finder du filer baseret på tidsstempler

Det Find kommando er et andet værktøj, der virker på tidsstempler. Det kan filtrere filer baseret på atime, ctime eller mtime. For eksempel:

find . -amin 15

finder filer, der blev åbnet for præcis 15 minutter siden, mens:

find . -mtime -2

finder filer ændret inden for de sidste to dage.

Linux holder styr på hver fil tre gange

Det mest almindeligt refererede filtidsstempel er mtime. Dette er f.eks. Dato og klokkeslæt, som en filoversigt viser. Men de to andre tidsstempler kan også være nyttige, forudsat at du forstår, hvad de refererer til. Især altid huske, at ctime repræsenterer lave om tid, ikke skabelse tid.

Kommandoer som touch og stat er nyttige medlemmer af Linux -kommandolinjeværktøjskassen. Disse kommandoer forbedrer din Linux -arbejdsgang ved at give dig mulighed for hurtigt at oprette nye filer.

Del Del Tweet E -mail Linux Commands Reference Cheat Sheet

Dette enkle snydeblad hjælper dig med at blive fortrolig med Linux -kommandolinjeterminalen på ingen tid.

hvad kan du gøre med en mac -adresse
Læs Næste Relaterede emner
  • Linux
  • Filhåndtering
  • Linux Distro
Om forfatteren Bobby Jack(58 artikler udgivet)

Bobby er en teknologientusiast, der arbejdede som softwareudvikler i det meste af to årtier. Han brænder for spil, arbejder som Reviews Editor hos Switch Player Magazine og er nedsænket i alle aspekter af onlineudgivelse og webudvikling.

Mere fra Bobby Jack

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere