Linux-Fil Tidsstämplar Förklarade: atime, mtime, och ctime

0
50
Fatmawati Achmad Zaenuri/Shutterstock

När har “förändrats” inte betyder “den”? När vi pratar om Linux-fil tidsstämplar. I den här guiden skall vi förklara hur systemet uppdaterar dem, och hur man ändrar dem själv.

Skillnaden Mellan atime, mtime, och ctime

Alla Linux-filen har tre tidsstämplar: tillgång till tidsstämpeln (tid), modifierad timestamp (mtime), och den ändras timestamp (ctime).

Tillgång timestamp är sista gången en fil kunde läsa. Detta innebär att någon har använt ett program för att visa innehållet i filen eller läsa några värden från det. Ingenting var redigeras eller läggas till handlingarna. De uppgifter som refereras till, men oförändrad.

En modifierad timestamp innebär sista gången innehållet av en fil har ändrats. Ett program eller en process som antingen redigerad eller manipulerad filen. “Modifierad” betyder något inuti filen har ändrats eller tagits bort, eller nya uppgifter har lagts till.

Ändrade tidsstämplar inte hänvisa till ändringar som har gjorts för att innehållet i en fil. Snarare, det är den tid på vilken metadata som rör filen har ändrats. Filen tillstånd förändringar, till exempel, kommer att uppdatera ändrade tidsstämpel.

Standard ext4 Linux filsystem anslår också utrymme för en fil skapas tidsstämpel i sina interna strukturer filsystem, men detta har inte genomförts ännu. Ibland, här tidsstämpeln är befolkade, men du kan inte bero på värderingar i det.

Anatomin av en Tidsstämpel

Linux tidsstämplar hålla ett nummer istället för ett datum och en tid. Detta antal är antalet sekunder sedan Unix epok, som var midnatt (00:00:00) från den 1 januari 1970, i UTC (Coordinated Universal Time). Skottsekunder ignoreras i Linux tidsstämplar, så att de inte motsvarar realtid.

När Linux behöver för att visa en tidsstämpel, översätter det antal sekunder in datum och tid. Detta gör det lättare för människor att förstå. Plats och tid zon datorn för att kunna visa filen är i guider omräkning av det antal sekunder som till ett datum och en tid. Det säkerställer också att den månaden är på rätt språk.

Så, hur många sekunder kan lagras i en tidsstämpel? En hel del—2,147,483,647, för att vara exakt. Det är en stor siffra, men är det tillräckligt? Om du lägger till att den Unix-epoken, och sedan översätta det till ett datum och en tid, du får tisdag, 19 januari 2038, kl 03:14:07 am Vi kommer att behöva ett annat system för tidsstämplar innan dess, dock.

Visa Tidsstämplar

När du använder-l (lång lista) alternativ med ls, som visas nedan, kan du se den modifierade tidsstämpel:

ls -l dp.c

Om du vill se tillgång timestamp använda -lu (åtkomsttid) alternativet som så:

ls -lu dp.c

Och slutligen, för att se förändring timestamp du kan använda-lc (ändra tid) alternativ, ange följande:

ls -lc-dp.c

Tidsstämplar ovan visar filens innehåll var senast ändrad den 21 April 2019. Tillgång och förändrats tidsstämplar är identiska eftersom filen har kopierats från en annan dator för att denna på januari 20, 2020, och både tidsstämplar var uppdaterad på den tiden.

För att se alla tidsstämplar samtidigt, använd stat kommandot enligt följande:

stat up.c

De tidszoner som är listade längst ned på displayen. Som du kan se, de har en mycket exakt, fraktionerad sekunder komponent. I slutet av varje timestamp kan du också se en -0500 eller -0400 .

Dessa är tidszon förskjutningar. Filsystemet poster tidsstämplar i UTC-tid och omvandlar dem till den lokala tidszonen när visas av stat. Den dator vi att användas till forskning denna artikel är konfigurerad som om det var i Eastern Standard Time (EST) zon i USA

Att tidszonen är fem timmar bakom UTC när EST är i kraft. Men, det är fyra timmar bakom UTC när Eastern Daylight Time (EDT) är i kraft. I April 2019, när den modifierade timestamp har ändrats, EDT var i kraft. Det är därför två av de tidsstämplar har en fem timmars tidsskillnad, men som modifierats har en fyra-timmars förskjutning.

De förskjutningar och tidszoner inte lagras var som helst. Det är varken en inode eller ett filsystem utrymme som ägnas åt att hålla dessa värden. Du måste beräkna dessa på fluga med tidsstämpel (som alltid är i UTC-tid), den lokala tidszonen för datorn att visa filen, och om SOMMARTID var i kraft.

Du ser också en “Födelse” timestamp, som är reserverad för datum för skapande av fil. Detta är inte genomfört, och du ser ett bindestreck “-” i stället för en tidsstämpel.

RELATERAT: Allt Du Någonsin Velat Veta Om inoder på Linux

Ändra Tidsstämplar

Om du vill kan du ändra tidsstämplar på en fil. Du kan använda touch-kommandot för att ändra den tillgång eller modifierade tidsstämplar, eller båda:

touch -up.c

För att ange en ny kopplingspunkt timestamp du skulle använda -en (åtkomsttid) alternativ. Detta kommando ställer in åtkomst timestamp till datorns aktuella tid:

stat up.c

Tillgång timestamp förändrats, som väntat. Dock förändrats tidstämpel uppdaterades liksom, detta är normalt.

För att ändra den modifierade timestamp du kan använda-m (ändrad tid) alternativ:

touch -m dp.c
stat up.c

Den här gången, modifieras och ändras tidsstämplar har uppdaterats.

Du kan använda-d (datum) alternativet om du vill ändra både tillgång och modifierade tidsstämplar samtidigt. Du kan också ange datum och tidpunkt—du är inte begränsad till att ändra tidsstämplar till idag.

Vi kommer att använda följande kommando för att ange en tillgång och modifierade tidsstämplar till 10:30:45 den 15 januari 2020:

touch -d “2020-01-15 10:30:45” dp.c
stat up.c

Vi har idag tillgång och modifierade tidsstämplar till ett datum i det förflutna. Den förändrade timestamp var också uppdaterats till nuvarande tid på datorn.

Du kan också använda-r (referens) alternativ, som visas nedan, om du vill ställa in tidsstämplar på en fil för att timestamp värden av en annan:

touch up.c -r dice_words.sl3
stat up.c

Och då är vi ganska mycket tillbaka där vi började, med en blandning av -0400 och -0500 tidsstämplar.

Låt oss göra något som bara påverkar den förändrade tidsstämpel. Vi kommer att använda kommandot chmod för att ge en körbar fil körrättigheter för alla användare:

chmod +x dp
stat up

Den förändrade timestamp var den enda som uppdateras. Detta beror på att filen i sig var inte förändrats—det var varken öppnas eller ändras. Dock metadata om filen har ändrats.

RELATERAT: Hur att Använda Kommandot chmod på Linux

Hur filsystemet Uppdateringar Tidsstämplar

När en fil är monterad, det finns alternativ som du kan använda för att ange hur filsystemet bör fungera eller behandlas. Dessa finns lagrade i /etc/fstab fil, som läses in och bearbetas vid uppstart. Du kan också ställa in alternativ för att bestämma den ordning som de bör använda för att uppdatera tillgång tidsstämpel.

Följande är några av de vanligaste alternativen:

  • strictatime (strikt atime): med det Här alternativet uppdaterar tillgång timestamp av filer varje gång de används. Det finns en overhead fäst med denna strategi, men vissa servrar kan dra nytta av detta system. Det har lite meriter på en stationär eller bärbar dator.
  • noatime (ingen tid): det Här alternativet fullt inaktiverar tillgång tidsstämplar för filer och kataloger från att uppdatera. Den modifierade tidsstämplar, men kommer fortfarande uppdatera.
  • nodiratime (nr dir atime): Detta alternativ gör det möjligt tillgång tidsstämplar för filer att uppdatera, men stänger det för kataloger.
  • relatime (relativ tid): det Här alternativet uppdaterar tillgång timestamp bara om det var mer än 24 timmar gamla, eller den föregående var äldre än den nuvarande modifieras eller ändras tidsstämplar. Detta skapar en god balans mellan tillgång tidsstämplar att uppdatera alltför ofta eller att inte uppdatera alls.

Låt oss titta på /etc/fstab för den här datorn och se vilka alternativ som är inställd:

less /etc/fstab

/Etc/fstab fil visas för oss, så som visas nedan.

Här är innehållet i filen utan att wrap-around:

# /etc/fstab: statisk filsystemsinformation.
#
# Använd ‘blkid” för att skriva ut den universiellt unik identifierare för en
# enheten; detta kan användas med UUID= som ett mer robust sätt att namn enheter
# som fungerar även om diskar läggs till och tas bort. Se fstab(5).
#
# <file system> <monteringspunkt> <typ> <alt> <dumpa> <pass>
# / var /dev/hda1 under installationen
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/swapfile inga swap sw 0 0

Det finns bara två poster, och en av dem är en swap-fil, som vi inte kan ignorera. Den andra är att monteras vid roten av filsystemet ( / ) och var på enheten /dev/sda1 vid installationen. Det är den första partitionen på den första hårddisken, och det händer att innehålla en ext4-filsystem.

Det enda alternativet som skickas till det är errors=remount-ro, som berättar för operativsystemet att montera filsystemet som läs-bara om det finns ett fel när du försöker att montera den som en läsa och skriva till filsystemet.

Så, det finns inget omnämnande av hur tillgång timestamp kommer att hanteras. Låt oss gräva djupare och kolla vad /proc/mounts kan berätta för oss. Vi ska pipe utdata från /proc/mounts genom grep. Vår sökning kommer att vara “sda”, hårddisken identifierare.

Vi skriver följande:

cat /proc/mounts | grep “sda”

Nu ser vi följande alternativ:

  • rw: file system kommer att monteras som en läsa och skriva till filsystemet.
  • relatime: file system kommer att använda den “relativa tid för systemet att uppdatera tillgång tidsstämplar.

Var kom den ifrån? Tja, relatime system används i följande situationer:

  • När standard i /etc/fstab alternativet används.
  • När relatime /etc/fstab alternativet används.
  • När ingen tillgång timestamp alternativ som används i /etc/fstab, och du använder dig av Linux-kärnan 2.6.30 eller nyare.

Vår /etc/fstab inlägg för filsystemet ext4 inte ange någon tillgång timestamp alternativ för uppdatering, så Linux gjort ett klokt val och används relatime.

RELATERAT: Hur man Skriver en fstab på Linux

Tidsstämplar Är Viktigt

Tidsstämplar ge oss ett enkelt sätt att se när en fil öppnas, ändras eller ändras. Men, ännu viktigare, ger de ett sätt att säkerhetskopiera och synkronisera programvara för att avgöra vilka filer som behöver säkerhetskopieras.

Förmågan att manipulera tidsstämplar kommer att visa sig användbart när du behöver för att med våld förmå ett program för att inkludera eller ignorera en fil eller en uppsättning filer.

LÄS NÄSTA

  • “Som att Spåra Förebyggande Miljö Ska Du Använda i Microsoft Kanten?
  • “Bluff Varning: Nej, Netflix Är inte stänga av Ditt Konto
  • “Ta Bort Din Personliga Information Från Folk-Finder Platser
  • “Hur till Skapa och Dela Plats Samlingar i Apple Maps
  • “Hur man Använder vik-Kommandot i Linux