Linux Tijdstempels Uitgelegd: atime, mtime, en ctime

0
63
Fatmawati Achmad Zaenuri/Shutterstock

Wanneer wordt “gewijzigd”, betekent niet “aangepast”? Wanneer we praten over Linux tijdstempels. In deze handleiding leggen we uit hoe het systeem werkt, en hoe om ze te veranderen en jezelf.

Het Verschil Tussen atime, mtime, en ctime

Elke Linux-bestand heeft drie tijdsregistratie: de toegang timestamp (tijd), de gewijzigde timestamp (mtime), en de gewijzigde timestamp (ctime).

De toegang timestamp is de laatste keer dat een bestand lezen. Dit betekent dat iemand gebruikt een programma om de inhoud van het bestand of lees een aantal waarden uit. Niets is bewerkt of toegevoegd aan het bestand. De gegevens waarnaar wordt verwezen, maar ongewijzigd.

Een aangepast timestamp geeft de laatste tijd de inhoud van een bestand werd gewijzigd. Een programma of proces, hetzij bewerkt of gemanipuleerd bestand. “Aangepast” betekent dat iets in het bestand is gewijzigd of verwijderd, of nieuwe gegevens zijn toegevoegd.

Gewijzigd tijdstempels niet verwijzen van de wijzigingen die zijn aangebracht aan de inhoud van een bestand. Integendeel, het is het moment waarop de metagegevens met betrekking tot het bestand is gewijzigd. Toestemming wijzigingen, bijvoorbeeld, zal het bijwerken van de gewijzigde tijdstempel.

De standaard ext4 Linux bestandssysteem kent bovendien nog ruimte voor een file-tijds tempel in het interne bestandssysteem structuren, maar dit is nog niet geïmplementeerd hebben. Soms is dit een timestamp is ingevuld, maar u kunt niet afhankelijk zijn van de waarden.

De Anatomie van een Tijdstempel

Linux tijdstempels het bezit van een aantal eerder zijn dan een datum en tijd. Dit getal is het aantal seconden sinds de Unix epoch, die was middernacht (00:00:00) op 1 januari, 1970, in Coordinated Universal Time (UTC). Leap seconden worden genegeerd in Linux tijdstempels, dus ze zijn niet analoog aan de echte tijd.

Bij Linux moet geven van een tijdstempel, dan vertaalt zich dat het aantal seconden in een datum en tijd. Dit maakt het makkelijker voor mensen om te begrijpen. De locatie en tijdzone van de computer het bestand te bekijken is in gidsen de conversie van het aantal seconden om een datum en tijd. Ook zorgt het voor een maand in de juiste taal.

Dus, hoeveel seconden kan worden opgeslagen in een tijdstempel? Een veel—2,147,483,647, om precies te zijn. Dat is een groot getal, maar is het genoeg? Als u die toevoegen aan de Unix epoch, en vervolgens te vertalen naar een datum en tijd, krijgt u dinsdag 19 januari 2038, om 03:14:07 uur moeten We een andere regeling voor tijdstempels voor die tijd al.

Het Bekijken Van Tijdstempels

Wanneer u de-l (lange lijst) optie met ls, zoals hieronder weergegeven, kunt u de gewijzigde tijdstempel:

ls -l dp.c

Als u wilt de toegang timestamp, gebruik je de-lu (toegangstijd) de optie als volgt:

ls -lu-dp.c

En tot slot, om de timestamp, kunt u gebruik maken van de -lc – (verander datum) optie, typ het volgende:

ls -lc-dp.c

De tijdstempels hierboven ziet u de inhoud van het bestand werden voor het laatst gewijzigd op 21 April 2019. De toegang tot en het veranderd tijdstempels zijn identiek, omdat het bestand is gekopieerd vanaf een andere computer om deze op januari 20, 2020, en zowel tijdstempels zijn bijgewerkt op dat moment.

Om alle timestamps gelijktijdig gebruik het stat opdracht als volgt:

stat-dp.c

De tijdzones worden weergegeven aan de onderkant van het scherm. Zoals u kunt zien, hebben ze een zeer nauwkeurige, fracties van seconden component. Aan het einde van elke timestamp, zie je ook een -0500 of -0400 .

Dit zijn de tijdzone offsets. Het bestand systeem registreert de timestamps in UTC en converteert deze naar de lokale tijd zone weergegeven door stat. De computer die we gebruikt voor het onderzoek in dit artikel is geconfigureerd als in de Eastern Standard Time (EST) zone van de VS.

Dat is de tijdzone van vijf uur achter UTC wanneer EST in werking is getreden. Echter, het is vier uur achter UTC wanneer Eastern Daylight Time (EST) in werking is getreden. In April 2019, wanneer de gewijzigde timestamp was veranderd, EDT van kracht was. Dat is de reden waarom twee van de tijdstempels hebben een vijf-uur-offset, maar de gewijzigde heeft een vier-uur-offset.

De offsets en tijdzones worden niet opgeslagen en overal. Er is noch een inode noch een bestandssysteem ruimte gewijd aan het houden van deze waarden. Je hebt voor het berekenen van deze op de vlieg met de timestamp (die altijd in de UTC-tijd), de lokale tijdzone van de computer weergeven van het bestand, en of de ZOMERTIJD van kracht was.

Ook zie je een “Geboorte” timestamp, die is gereserveerd voor de datum van aanmaak van het bestand. Dit is niet geïmplementeerd, en zie je een koppelteken “-” in plaats van een tijdstempel.

GERELATEERD: Alles wat Je Ooit Wilde Weten Over inodes op Linux

Het Veranderen Van Tijdstempels

Als u wilt, kunt u de tijdstempels van een bestand. U kunt gebruik maken van het touch commando om de toegang te wijzigen of gewijzigde tijdstempels, of beide:

touch -een dp.c

Voor het instellen van een nieuwe toegang timestamp, gebruikt u de-a (toegangstijd) optie. Met deze opdracht wordt de toegang tijdsstempel naar de computer van de huidige tijd:

stat-dp.c

De toegang tijdstempel is gewijzigd, zoals verwacht. Echter, de gewijzigde tijdstempel werd bijgewerkt; dit is normaal.

Wijzigen van de gewijzigde timestamp, kunt u gebruik maken van de optie-m (gewijzigde tijd) optie:

touch -m dp.c
stat-dp.c

Deze tijd, het aangepast en veranderd tijdstempels zijn bijgewerkt.

U kunt gebruik maken van de -d (datum) optie als u wilt wijzigen de toegang tot en gewijzigd tijdstempels tegelijk. Ook kunt u een tijd en datum—je niet beperkt tot het wijzigen van de tijdstempels voor het heden.

We gebruiken de volgende opdracht om de toegang en gewijzigd tijdstempels om 10:30:45 op 15 januari 2020:

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

We hebben nu de toegang tot en het gewijzigde tijdstempels op een datum in het verleden. De gewijzigde timestamp is ook bijgewerkt naar de huidige tijd van de computer.

U kunt ook gebruik maken van de -r (referentie) optie, zoals hieronder weergegeven, als u wilt instellen dat de tijdstempels van het ene bestand naar de timestamp waarden van een ander:

raak dp.c -r dice_words.sl3
stat-dp.c

En dan zijn we vrij veel terug waar we begonnen zijn, met een mengsel van -0400 en -0500 tijdstempels.

Laten we iets doen dat alleen van invloed op de gewijzigde tijdstempel. We zullen de opdracht chmod gebruiken om een uitvoerbaar bestand machtigingen voor alle gebruikers:

chmod +x dp
stat dp

De gewijzigde timestamp was de enige die bijgewerkt. Dit komt omdat het bestand zelf wordt niet gewijzigd—was het niet toegankelijk zijn of worden aangepast. Echter, de metagegevens van het bestand is gewijzigd.

GERELATEERD: Hoe de Opdracht chmod Gebruiken op Linux

Hoe het bestandssysteem Updates Tijdstempels

Als een bestandssysteem wordt aangekoppeld is, zijn er opties die u kunt gebruiken om aan te geven hoe dat bestand systeem moet functioneren of worden behandeld. Deze worden opgeslagen in het /etc/fstab bestand, die wordt gelezen en verwerkt tijdens het opstarten. U kunt ook opties instellen om te bepalen wat de regeling die zij moeten gebruiken voor het bijwerken van de toegang tijdstempel.

De volgende zijn enkele van de meest voorkomende mogelijkheden:

  • strictatime (strikte atime): Deze optie werkt de toegang tot het tijdstempel van bestanden elke keer dat ze zijn benaderd. Er is een overhead die verbonden zijn met deze aanpak, maar sommige servers kunnen profiteren van deze regeling. Het heeft weinig verdienste op een desktop of laptop computer.
  • noatime (geen tijd): Deze optie volledig schakelt de toegang tijdstempels voor bestanden en directories te updaten. De gewijzigde tijdstempels, echter, nog steeds update.
  • nodiratime (geen dir atime): Deze optie maakt het mogelijk de toegang timestamps voor-bestanden bijwerken, maar schakelt het voor mappen.
  • relatime (relatieve tijd): Deze optie werkt de toegang tijdstempel alleen als het was meer dan 24 uur oud, of de vorige was ouder dan de huidige aangepast of gewijzigd tijdstempels. Dit zorgt voor een goede balans tussen toegang timestamps updaten te vaak of niet bijwerken op alle.

Laten we eens kijken naar het /etc/fstab bestand voor deze computer en zie welke opties worden ingesteld:

less /etc/fstab

Het /etc/fstab bestand wordt weergegeven voor ons, zoals hieronder weergegeven.

Hier is de inhoud van het bestand, zonder de wrap-around:

# /etc/fstab: static file systeem informatie.
#
# Gebruik de ‘blkid’ af te drukken om de universally unique identifier voor een
# dit apparaat kan worden gebruikt met de UUID= als er een krachtiger manier om de naam van apparaten
# dat werkt zelfs als schijven zijn toegevoegd en verwijderd. Zie fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / op /dev/sda1 tijdens de installatie
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

Er zijn slechts twee items, en een van hen is een swap-bestand, die we kunnen negeren. De andere wordt gemonteerd op de root van het bestandssysteem ( / ) en was op apparaat /dev/hda1 op het moment van installatie. Dat is de eerste partitie op de eerste harde schijf, en het gebeurt bevatten een ext4-bestandssysteem.

De enige optie doorgegeven aan het errors=remount-ro, die vertelt het besturingssysteem opnieuw verbinding te maken met dit bestandssysteem als alleen-lezen als er fouten optreden wanneer u probeert te koppelen als een lees-en schrijf-bestandssysteem.

Er is dus geen sprake van hoe de toegang tijdstempel zal worden behandeld. Laten we eens dieper graven en kijken wat /proc/mounts kan ons vertellen. We zullen de output met een pijp uit /proc/mounts door grep. Onze search string “sda”, de harde schijf-id.

We typt u het volgende:

cat /proc/mounts | grep “sda”

Nu zien we de volgende opties:

  • rw: Het bestandssysteem wordt aangekoppeld als een lees-en schrijf-bestandssysteem.
  • relatime: De bestand systeem zal gebruik maken van de “relatieve atime” schema bijwerken van de toegang tijdstempels.

Waar kwam die vandaan? Goed, de relatime schema wordt gebruikt in de volgende situaties:

  • Bij de standaard /etc/fstab optie wordt gebruikt.
  • Wanneer de relatime /etc/fstab optie wordt gebruikt.
  • Wanneer geen toegang timestamp opties worden gebruikt in /etc/fstab, en je bent met gebruik van de Linux kernel 2.6.30 of nieuwer.

Onze /etc/fstab voor het ext4 bestandssysteem niet opgeven toegang tijdstempel update-opties, dus Linux maakte de verstandige keuze en gebruikt relatime.

GERELATEERD: Hoe Schrijf je een fstab Bestand op Linux

Tijdstempels Zijn Belangrijk

Tijdmarkeringen geven ons een eenvoudige manier om te zien wanneer een bestand is geopend, aangepast of veranderd. Maar, belangrijker nog, ze bieden een manier om een back-up en synchronisatie software om te bepalen welke bestanden moeten worden ondersteund.

De mogelijkheden voor het manipuleren van tijdstempels zal nuttig zijn wanneer u het nodig met geweld te overtuigen van een programma voor het opnemen of het negeren van een bestand of een groep bestanden.

LEES VERDER

  • “Die Tracking Preventie Instelling Moet U in Microsoft Rand?
  • “Scam Alert: Nee, Netflix Is niet Opschorten van Uw Account
  • “Hoe Uw Persoonlijke Informatie te Verwijderen Van Mensen-Finder Sites
  • “Hoe te Maken en te Delen Locatie Collecties in Apple Maps
  • “Het Gebruik van de vouw Opdracht op Linux