Forstå Linux File Timestamps: mtime, ctime og atime

Forstå Linux File Timestamps: mtime, ctime og atime

Linux -operativsystemet holder orden på tre tidsstempler for hver fil på systemet ditt. Disse tidsstemplene lar deg finne ut når en fil sist ble oppdatert. Men hva betyr de alle? Og hvordan finner du ut disse tider for en fil? Er det en forskjell når det gjelder kataloger?





En forståelse av atime, ctime og mtime kan svare på alle disse spørsmålene. Dette er de tre tidsstemplene som Unix -filsystemer sporer. Hvis du noen gang trenger å finne ut detaljer om hva som endret seg og når, les videre.





Hva er de tre Unix -tidsstemplene?

Hver fil har tre tidsstempler knyttet til seg. Linux lagrer disse i Unix tidsformat som måler sekunder siden epoken. De tre tidsstemplene blir ofte referert til som atime, ctime og mtime.





De mtime er den vanligste og ofte den mest nyttige. Det står for endret tid . Det er tidspunktet da filens innhold sist ble skrevet til disk.

Litt annerledes er ctime som står for endre tid . Dette tidsstempelet sporer metadataendringer som eierskap og tillatelser. Den inkluderer å gi nytt navn til en fil - i det minste på typiske moderne Linux -operativsystemer. Men den oppdateres også når filens innhold endres, så den er alltid like oppdatert som mtime.



Det tredje tidsstempelet er en gang , som lagrer siste gang noen åpnet filen.

gratis ocr -programvare for Windows 10

Hvordan tidsstempler gjelder for kataloger

En Linux -katalog er i hovedsak en liste over filene i den katalogen. Så å lage en fil i en katalog vil oppdatere katalogens mtime. Liste over filene i katalogen ved hjelp av ls kommando, for eksempel, oppdaterer tilgangstiden. Og som med en fil, endrer katalogets tillatelser eller navn oppdateringstiden.





Hva med skapelsestiden?

Det kan overraske deg å lære at Linux rett og slett ikke holder styr på opprettelsestiden. Det kan du i utgangspunktet anta ctime står for skapelsestid. På samme måte kan du tenke på det som en veldig nyttig ting å kunne finne ut av.

Mange programmer lagrer filer ved å lage dem fra bunnen av hver gang. Dette vil gjøre bruk av en opprettelsestid misvisende.





Slik ser du de forskjellige tidsstemplene

Den enkleste måten å få tidsstempelinformasjon er med de 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 vise atime i stedet ved å bruke -u flagg:

$ 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 siste linjen bekrefter at tiden for denne filen er forskjellig fra tidspunktet. Til slutt bruker du -c flagg for å 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 gangen bekrefter vi at alle tre gangene er forskjellige og riktige: vi endret, åpnet, deretter endret filen, i den rekkefølgen.

Et alternativ til ls er stat kommando. Denne kommandoen viser detaljer på lavt nivå fra filens inode. Det gjør det lettere å kontrollere alle tre gangene samtidig. Det kommer også rundt problemet med det uintuitive -u flagg. Her er et eksempel på utdata for den samme filen:

$ 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

Slik oppdaterer du tidsstempler

De ta på kommandoen endrer endring og tilgangstid for en fil. Det er også en praktisk måte å lage en tom fil, som den vil gjøre hvis filen ikke allerede finnes:

hvordan få noen til å snuse i Android -telefonen din
touch tmp

Som standard vil den sette mtime og atime til gjeldende tid. Du kan angi et annet tidspunkt med -t flagg:

touch -t 202103061200 tmp

Du kan også angi bare mtime eller atime med -m og -til henholdsvis flagg:

touch -t 202103061300 -m tmp

Vær oppmerksom på at ctime alltid oppdateres når vi angir atime eller mtime.

Hvordan finne filer basert på tidsstempler

De finne kommando er et annet verktøy som virker på tidsstempler. Den kan filtrere filer basert på atime, ctime eller mtime. For eksempel:

find . -amin 15

finner filer som ble åpnet for nøyaktig 15 minutter siden, mens:

find . -mtime -2

finner filer endret i løpet av de siste to dagene.

Linux holder oversikt over hver fil tre ganger

Tidsstempelet for filene som oftest refereres til er mtime. Dette er for eksempel datoen og klokkeslettet som en filliste viser. Men de to andre tidsstemplene kan også være nyttige, forutsatt at du forstår hva de refererer til. Husk spesielt at ctime representerer endring tid, ikke opprettelse tid.

Kommandoer som touch og stat er nyttige medlemmer av Linux -kommandolinjens verktøykasse. Disse kommandoene vil forbedre Linux -arbeidsflyten din ved å la deg lage nye filer raskt.

Dele Dele kvitring E -post Linux Commands Reference Cheat Sheet

Dette enkle juksearket hjelper deg med å bli komfortabel med Linux -kommandolinjeterminalen på kort tid.

hvordan koble en switch til en tv
Les neste Relaterte temaer
  • Linux
  • Filbehandling
  • Linux Distro
Om forfatteren Bobby Jack(58 artikler publisert)

Bobby er en teknologientusiast som jobbet som programvareutvikler i de fleste to tiårene. Han brenner for spill, jobber som Reviews Editor i Switch Player Magazine, og er fordypet i alle aspekter av online publisering og webutvikling.

Mer fra Bobby Jack

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere