Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime en ctime

Wanneer betekent ‘verandering’ niet ‘wijzigen’? Als we het hebben over tijdstempels van Linux-bestanden. In deze handleiding leggen we uit hoe het systeem deze bijwerkt en hoe u deze zelf kunt wijzigen.

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Het verschil tussen atime, mtime en ctime

Elk Linux-bestand heeft drie tijdstempels: de toegangstijdstempel (atime), de gewijzigde tijdstempel (mtime) en de gewijzigde tijdstempel (ctime).

De toegangstijdstempel is de laatste keer dat het bestand is gelezen. Dit betekent dat iemand een programma heeft gebruikt om de inhoud van het bestand te bekijken of er enkele waarden uit te lezen. Er is niets gewijzigd of toegevoegd aan het bestand. Er wordt naar de gegevens verwezen, maar deze zijn ongewijzigd.

De gewijzigde tijdstempel geeft de laatste keer aan dat de inhoud van het bestand is gewijzigd. Een programma of proces bewerkt of manipuleert het bestand. “Gewijzigd” betekent dat er iets in het bestand is gewijzigd of verwijderd, of dat er nieuwe gegevens zijn toegevoegd.

Gewijzigde tijdstempels geven geen wijzigingen aan die in de bestandsinhoud zijn aangebracht. Het is eerder het tijdstip waarop de metagegevens met betrekking tot het bestand zijn gewijzigd. Wijzigingen in bestandsrechten zorgen er bijvoorbeeld voor dat de gewijzigde tijdstempel wordt bijgewerkt.

Het standaard Linux ext4-bestandssysteem wijst ook ruimte toe voor de tijdstempel voor het maken van bestanden in de interne bestandssysteemstructuren, maar dit is nog niet geïmplementeerd. Soms is deze tijdstempel gevuld, maar kun je niet vertrouwen op de waarden erin.

Gedetailleerde tijdstempel

Linux-tijdstempels bevatten een getal in plaats van datum en tijd. Dit getal is het aantal seconden geleden Unix-tijdperk, dat was middernacht (00:00:00) op 1 januari 1970, Gecoördineerde universele tijd (UTC). Schrikkelseconden worden genegeerd in Linux-tijdstempels, dus ze lijken in niets op realtime.

Wanneer Linux een tijdstempel moet weergeven, vertaalt het het aantal seconden in een datum en tijd. Dit maakt het voor mensen makkelijker te begrijpen. De locatie en tijdzone waarin de computer het bestand bekijkt, instrueert de computer om het aantal seconden om te zetten in een datum en tijd. Het zorgt er ook voor dat de maand in de juiste taal is.

Hoeveel seconden kunnen er in een tijdstempel worden opgeslagen? Veel – 2,147,483,647 om precies te zijn. Dit is een groot aantal, maar is het genoeg? Als je dat aan het Unix-tijdperk toevoegt en het vervolgens vertaalt naar een datum en tijd, krijg je dinsdag 19 januari 2038 om 03:14:07 uur. Vóór die tijd hebben we een ander systeem voor tijdstempels nodig.

Tijdstempels weergeven

Wanneer de optie -l (longlist) wordt gebruikt met ls, zoals hieronder weergegeven, U kunt de gewijzigde tijdstempel zien:

ls -l dp.c

Als u de tijdstempel van de toegang wilt zien, gebruikt u de optie -lu (toegangstijd) als volgt:

ls -lu dp.c

Ten slotte kunt u, om de tijdstempel van de wijziging te zien, de optie -lc (change time) gebruiken; Schrijf het volgende:

ls -lc dp.c

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Uit de tijdstempels hierboven blijkt dat de bestandsinhoud voor het laatst is gewijzigd op 21 april 2019. De tijdstempels voor toegang en wijziging zijn identiek omdat het bestand op 20 januari 2020 van een andere computer naar deze computer is gekopieerd en beide tijdstempels op dat moment zijn bijgewerkt.

Lees ook:  Hoe wachtwoordloze SSH-aanmeldingen op Linux in te schakelen

zien Alle tijdstempels in één keer, gebruik het stat-commando als volgt:

stat dp.c

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Tijdzones worden onderaan het scherm weergegeven. Zoals je kunt zien, hebben ze een zeer nauwkeurige secondencomponent. Aan het einde van elke tijdstempel ziet u ook -0500 of -0400.

Dit zijn tijdzoneafwijkingen. Het bestandssysteem registreert UTC-tijdstempels en converteert deze naar de lokale tijdzone wanneer deze door statistieken wordt weergegeven. De computer die we gebruikten om dit artikel te onderzoeken, was geconfigureerd alsof deze zich in de Eastern Standard Time (EST)-zone van de Verenigde Staten bevond.

Deze tijdzone ligt vijf uur achter op de Coördineerde Universele Tijd (UTC) wanneer Eastern Time van kracht is. Het loopt echter vier uur achter op de Coördineerde Universele Tijd (UTC) wanneer Eastern Daylight Time (EDT) van kracht is. In april 2019, toen het herziene tijdstempel werd gewijzigd, werd de US Eastern Standard Time van kracht. Dat is de reden waarom twee van de tijdstempels een afwijking van vijf uur hebben, maar de bewerkte versie een afwijking van vier uur.

Offsets en tijdzones worden nergens opgeslagen. Er is geen inode en geen bestandssysteemruimte toegewezen om deze waarden te bevatten. U moet dit snel berekenen met behulp van de tijdstempel (die altijd UTC is), de lokale tijdzone van de computer die het bestand bekijkt en of de zomertijd al dan niet van kracht is.

U ziet ook de tijdstempel 'Geboorte', die is gereserveerd voor de datum waarop het bestand is gemaakt. Dit is niet geïmplementeerd en u ziet een koppelteken “-” in plaats van de tijdstempel.

Tijdstempels wijzigen

Als u wilt, kunt u de tijdstempels van het bestand wijzigen. U kunt de aanraakopdracht gebruiken om de toegang of gewijzigde tijdstempels te wijzigen, Of allebei:

touch -a dp.c

Om een ​​nieuwe toegangstijdstempel in te stellen, kunt u de optie -a (toegangstijd) gebruiken. Met deze opdracht wordt de toegangstijdstempel ingesteld op de huidige tijd van de computer:

stat dp.c

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

De toegangstijdstempel is zoals verwacht gewijzigd. De gewijzigde tijdstempel is echter ook bijgewerkt; Het is normaal.

Om de gewijzigde tijdstempel te wijzigen, kunt u de optie -m (gewijzigde tijd) gebruiken:

touch -m dp.c
stat dp.c

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Deze keer zijn de gewijzigde en gewijzigde tijdstempels bijgewerkt.

U kunt de optie -d (datum) gebruiken als u zowel tijdstempels als gewijzigde toegang in één keer wilt wijzigen. U kunt ook de tijd en datum opgeven; u bent niet beperkt tot het wijzigen van tijdstempels naar het heden.

We zullen de volgende opdracht gebruiken om de toegang en gewijzigde tijdstempels in te stellen op 10:30:45 op 15 januari 2020:

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

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

We hebben nu de toegang en gewijzigde tijdstempels ingesteld op een datum in het verleden. De gewijzigde tijdstempel wordt ook bijgewerkt naar de huidige tijd van de computer.

U kunt ook de optie -r (referentie) gebruiken, zoals hieronder weergegeven, als u de tijdstempels van het ene bestand wilt instellen op de tijdstempelwaarden van een ander bestand:

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

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Daarna zijn we bijna terug waar we begonnen, met een mix van -0400 en -0500 tijdstempels.

Lees ook:  Hoe AUR te gebruiken in Arch Linux

Laten we iets doen dat alleen de variabele tijdstempel beïnvloedt. We zullen de opdracht chmod gebruiken om het uitvoerbare bestand te verlenen Machtigingen uitvoeren voor alle gebruikers:

chmod +xdp
stat dp

De gewijzigde tijdstempel was de enige die werd bijgewerkt. Dit komt omdat het bestand zelf niet is gewijzigd, noch is geopend of gewijzigd. De metadata over het bestand zijn echter gewijzigd.

Hoe werkt het bestandssysteem tijdstempels bij?

Wanneer een bestandssysteem is geïnstalleerd, zijn er opties die u kunt gebruiken om op te geven hoe dat bestandssysteem wordt uitgevoerd of hoe ermee moet worden omgegaan. Ze worden opgeslagen in het bestand /etc/fstab, dat tijdens het opstarten wordt gelezen en verwerkt. U kunt ook opties instellen om te bepalen welk systeem moet worden gebruikt om de toegangstijdstempel bij te werken.

Hier zijn enkele van de meest populaire opties:

strictatime: Deze optie werkt de tijdstempel van de toegang tot bestanden bij telkens wanneer ze worden geopend. Er zijn extra kosten verbonden aan deze aanpak, maar sommige servers kunnen van deze regeling profiteren. Het heeft weinig voordelen ten opzichte van een desktop- of laptopcomputer.
noatime(no atime): Met deze optie worden de toegangstijdstempels voor bestanden en mappen volledig uitgeschakeld. De gewijzigde tijdstempels worden echter bijgewerkt.
nodiratime (no dir atime): Deze optie geeft toegang tot tijdstempels voor bestanden die moeten worden bijgewerkt, maar schakelt deze uit voor mappen.
relatime: Deze optie werkt de toegangstijdstempel alleen bij als deze meer dan 24 uur oud is, of als de vorige ouder is dan de huidige gewijzigde of gewijzigde tijdstempel. Dit zorgt voor een goede balans tussen het vaak bijwerken van de toegangstijdstempels of helemaal niet bijwerken.
Laten we eens kijken naar het bestand /etc/fstab voor deze computer en zien welke opties zijn ingesteld:

less / etc / fstab

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Het bestand /etc/fstab verschijnt zoals hieronder weergegeven.

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Hier is de bestandsinhoud zonder de verpakking:

# /etc/fstab: statische bestandssysteeminformatie.
#
# Gebruik 'blkid' om de universeel unieke identificatiecode voor a af te drukken
# apparaat; dit kan worden gebruikt met UUID= als een robuustere manier om apparaten een naam te geven
# dat werkt zelfs als schijven worden toegevoegd en verwijderd. Zie fstab(5).
#
# <filet system> <monteren punt> < type dan: > <opties> <storten> <passeren>
# / stond op / dev / sda1 tijdens de installatie
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 fouten=remount-ro 0 1 /swapfile geen swap sw 0 0

Er zijn slechts twee vermeldingen, waarvan er één een wisselbestand is, die we kunnen negeren. De andere is geïnstalleerd in de hoofdmap van het bestandssysteem ( / ) en bevond zich op het apparaat /dev/sda1 op het moment van installatie. Dit is de eerste partitie op de eerste harde schijf en deze bevat toevallig het ext4-bestandssysteem.

De enige optie die eraan wordt doorgegeven is fouten=remount-ro, die het besturingssysteem vertelt dit bestandssysteem opnieuw te koppelen als een alleen-lezen-systeem als er fouten optreden bij het aankoppelen als een lees-schrijfbestandssysteem.

Daarom wordt er niet vermeld hoe om te gaan met de toegangstijdstempel. Laten we dieper graven en kijken wat /proc/mounts ons kan vertellen. We zullen de uitvoer van /proc/mounts via grep verbinden. Onze zoekreeks is “sda", identificatie van de harde schijf.

Lees ook:  Hoe Arch Linux op pc te installeren

Wij schrijven het volgende:

cat /proc/mounts | grep "sda"

Uitleg van tijdstempels van Linux-bestanden voor: atime, mtime, ctime - %categories

Nu zien we de volgende opties:

rw: Het bestandssysteem wordt aangekoppeld als een lees-schrijfbestandssysteem.
relatime: het bestandssysteem gebruikt het “relatieve tijd”-systeem om toegangstijdstempels bij te werken.
Waar kwam dit vandaan? Welnu, een linkdiagram wordt gebruikt in de volgende situaties:

Wanneer u de standaardoptie /etc/fstab.
Wanneer u de relatime /etc/fstab.
Wanneer de toegangstijdstempelopties in /etc/fstab niet worden gebruikt en u Linux kernel 2.6.30 of hoger gebruikt.
Onze /etc/fstab-invoer voor het ext4-bestandssysteem specificeerde geen opties voor het bijwerken van de toegangstijdstempel, dus maakte Linux de verstandige keuze en gebruikte relatime.

Tijdstempels zijn belangrijk

Tijdstempels geven ons een gemakkelijke manier om te weten wanneer een bestand is geopend, gewijzigd of gewijzigd. Maar wat nog belangrijker is, het biedt een manier om een ​​back-up te maken van de software en deze te synchroniseren om bestanden te identificeren waarvan een back-up moet worden gemaakt.

De mogelijkheid om tijdstempels te manipuleren komt van pas wanneer u een programma met kracht moet overtuigen om een ​​bestand of een groep bestanden op te nemen of te negeren.

Linux Commando's
Bestanden teer·pv·hoe·tac·chmod·grep ·diff·dorst·ar·man·pushd·popd·fsck·TestDisk·seq·fd·pandoc·cd·$ PATH·awk·mee·jq·vouw·uniek·journalctl·staart·staat·ls·fstab·echo·minder·chgrp·chown·rev·blik·strings· type dan: ·andere naam geven·ritssluiting·unzip·monteren·umount·installeren·fdisk·mkfs·rm·rmdir·rsync·df·GPG·vi·nano·mkdir·du·ln·stuk·converteren·rclone·stukje·SRM·scp·gzip·kletsen·gesneden·vinden·umasker·wc· tr
processen alias·scherm·top·mooi·nieren·vooruitgang·spoor·systemd·tmux·chsh·geschiedenis·at·partij·gratis·welke·dmesg·chfn·gebruikersmod·ps·chroot·xargs·tty·pinky·lsof·vmstat·time-out·muur·ja·doden·slaap·sudo·su·niet de tijd of·groepadd·gebruikersmod·groepen·lshw·stillegging·opnieuw op te starten·halte·poweroff·passwd·lscpu·crontab·gegevens·bg·fg·pidof·nee·pmap
Netwerken netstat·ping·traceroute·ip·ss·whois·fail2ban·bmon·graven·vinger·nmap·ftp·krullen·wget·die·whoami·w·iptables·ssh-keygen·ufw·arpen·firewalld
Dit vind je misschien ook leuk