Ero sivun ”Aikaleima” versioiden välillä
Pb (keskustelu | muokkaukset) |
pEi muokkausyhteenvetoa |
||
(2 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
[[Ydin]] ylläpitää tiedostojen kolmea aikaleimaa: ''mtime'', ''ctime'' ja ''atime''. mtime on yleensä tiedoston viimeisen muutoksen, ctime [[i-node]]n viimeisen muutoksen ja atime viimeisen lukemisen ajankohta. Aikaa käsitellään yleensä kokonaisina sekunteina vuoden 1970 alusta. | [[Ydin]] ylläpitää tiedostojen kolmea '''aikaleimaa''': ''mtime'', ''ctime'' ja ''atime''. mtime on yleensä tiedoston viimeisen muutoksen, ctime [[i-node]]n viimeisen muutoksen ja atime viimeisen lukemisen ajankohta. Aikaa käsitellään yleensä kokonaisina sekunteina vuoden 1970 alusta. | ||
Kaikki käytetyt [[tiedostojärjestelmä]]t eivät tue näitä aikaleimoja, jolloin tiedostojärjestelmän ajuri tai tiedostojärjestelmää käyttävä ohjelma tarvittaessa muodosta aikaleimat käytössä olevasta tiedosta, huomioiden aikaleimojen tavallisimmat käytöt. Käyttäytymiseen voi usein vaikuttaa joko [[mount|liitosvalitsimilla]] tai ohjelman asetuksilla. | Kaikki käytetyt [[tiedostojärjestelmä]]t eivät tue näitä aikaleimoja, jolloin tiedostojärjestelmän ajuri tai tiedostojärjestelmää käyttävä ohjelma tarvittaessa muodosta aikaleimat käytössä olevasta tiedosta, huomioiden aikaleimojen tavallisimmat käytöt. Käyttäytymiseen voi usein vaikuttaa joko [[mount|liitosvalitsimilla]] tai ohjelman asetuksilla. | ||
Rivi 16: | Rivi 16: | ||
atime ("''access'' time") on ajankohta jolloin tiedostoa viimeksi luettiin. Sitä voi käyttää esimerkiksi varmistamaan että tiettyä tiedostoa tosiaan käytetään ("miksi ihmeessä nämä asetukset eivät vaikuta?"), tarkastamaan onko muutoksia tapahtunut viimeisen lukemisen jälkeen tai arvioimaan ovatko tietyn hakemiston tiedostot käytössä (vai voiko ne poistaa). | atime ("''access'' time") on ajankohta jolloin tiedostoa viimeksi luettiin. Sitä voi käyttää esimerkiksi varmistamaan että tiettyä tiedostoa tosiaan käytetään ("miksi ihmeessä nämä asetukset eivät vaikuta?"), tarkastamaan onko muutoksia tapahtunut viimeisen lukemisen jälkeen tai arvioimaan ovatko tietyn hakemiston tiedostot käytössä (vai voiko ne poistaa). | ||
Aikaleimojen ylläpito vaatii kirjoituksen joka lukemisen yhteydessä, mikä lisää [[virrankulutuksen optimointi|virrankulutusta]] sekä hidastaa järjestelmän toimintaa. Tästä syystä atimea ei 9.6.2009 julkaistusta [[ydin|ytimen]] 2.6.30-versiosta lähtien enää oletuksena päivitetä kuin silloin, jos se on yli vuorokauden ikäinen tai vanhempi kuin mtime tai ctime [http://valhenson.livejournal.com/36519.html]. Tätä asetusta voi muuttaa tiedostojärjestelmän [[mount|liitosasetusten]] avulla. | |||
Tiedostojen varmuuskopiointi, indeksointi yms. | Atime saattaa muutenkin jäädä päivittymättä esimerkiksi [[NFS]]:n välimuistitoimintojen takia. Tiedostojen varmuuskopiointi, indeksointi yms. voivat myös aiheuttaa aikaleiman "aiheetonta" päivittymistä, jolloin sen informaatioarvo heikkenee. | ||
===Asetukset=== | |||
Tiedostojärjestelmää liitettäessä on käytössä neljä erilaista atime-asetusta: | |||
*'''strictatime''' - muutetaan aina atime-leimoja | |||
*'''nodiratime''' - ei muuteta hakemistojen atime-leimoja | |||
*'''relatime''' - muutetaan atimea vain silloin, kun se on vanhempi kuin mtime tai ctime, tai uudemmissa versioissa myös silloin, jos leima on yli vuorokauden ikäinen (oletus) | |||
*'''noatime''' - ei koskaan muuteta atimea | |||
Asetusta <tt>noatime</tt> voi käyttää, mikäli käytössä ei ole tiettyjä ohjelmia (esimerkiksi [[mutt]]-sähköpostiohjelma), jotka tarvitsevat tietoa siitä, milloin tiedostoa on viimeksi luettu sen muokkaamisen jälkeen (eli esimerkiksi onko tiedostossa uusia viestejä). [[Työpöytäympäristö]]jen ohjelmat valvovat yleensä näitä tiedostoja eri tekniikalla. | |||
atimen täysi päivittämättä jättäminen tarkoittaa, että käyttämättömiä ja siten luultavasti hyödyttömiä tiedostoja on vaikeampi löytää. atimen käyttö tähän tarkoitukseen tosin edellyttää, ettei atime päivity varmuuskopioimisen, tiedostojen indeksoinnin tms. yhteydessä. | |||
Jo liitetyn tiedostojärjestelmän voi muuttaa käyttämään esimerkiksi noatimea komennolla | |||
mount -o remount,noatime ''liitospiste'' | |||
Pysyvämmin asetuksen saa käyttöön lisäämällä sen [[fstab]]iin (neljäs sarake) esimerkiksi seuraavasti: | |||
/dev/hdc1 /home ext3 defaults,noatime 0 2 | |||
atimen saa väliaikaisesti kokonaan käyttöön komennolla | |||
mount -o remount,strictatime ''liitospiste'' | |||
esimerkiksi silloin, jos haluaa tarkistaa, lukeeko ohjelma sitä tiedostoa mitä sen luulee lukevan. | |||
==Aikaleiman käyttö== | ==Aikaleiman käyttö== |
Nykyinen versio 10. marraskuuta 2020 kello 11.11
Ydin ylläpitää tiedostojen kolmea aikaleimaa: mtime, ctime ja atime. mtime on yleensä tiedoston viimeisen muutoksen, ctime i-noden viimeisen muutoksen ja atime viimeisen lukemisen ajankohta. Aikaa käsitellään yleensä kokonaisina sekunteina vuoden 1970 alusta.
Kaikki käytetyt tiedostojärjestelmät eivät tue näitä aikaleimoja, jolloin tiedostojärjestelmän ajuri tai tiedostojärjestelmää käyttävä ohjelma tarvittaessa muodosta aikaleimat käytössä olevasta tiedosta, huomioiden aikaleimojen tavallisimmat käytöt. Käyttäytymiseen voi usein vaikuttaa joko liitosvalitsimilla tai ohjelman asetuksilla.
mtime[muokkaa]
mtime (modification time) on tiedoston viimeisen muutoksen ajankohta. Tiedostoja kopioitaessa on usein erikseen pyydettävä mtimen säilyttämistä, siirtäessä järjestelmän sisällä komennolla mv aika säilyy itsestään.
mtime-aika, kuten atime, on asetettavissa komennolla touch. Komento päivittää samalla ctimen nykyhetkeen.
ctime[muokkaa]
ctime (status change time) on aikaleima, jota käytetään varmuuskopiointiin. Tiedoston siirtäminen, oikeuksien muutokset yms. sekä myös tiedoston muokkaukset ja aikaleimojen asettaminen asettaa ctimen.
Huomaa, että ctime ei ole "creation time". Tällaista aikaleimaa ei ole unixeissa. Sen korvikkeena (Sambassa yms.) käytetään yleensä joko aikaisinta aikaleimaa tai unix-ajan nollahetkeä 1.1.1970.
atime[muokkaa]
atime ("access time") on ajankohta jolloin tiedostoa viimeksi luettiin. Sitä voi käyttää esimerkiksi varmistamaan että tiettyä tiedostoa tosiaan käytetään ("miksi ihmeessä nämä asetukset eivät vaikuta?"), tarkastamaan onko muutoksia tapahtunut viimeisen lukemisen jälkeen tai arvioimaan ovatko tietyn hakemiston tiedostot käytössä (vai voiko ne poistaa).
Aikaleimojen ylläpito vaatii kirjoituksen joka lukemisen yhteydessä, mikä lisää virrankulutusta sekä hidastaa järjestelmän toimintaa. Tästä syystä atimea ei 9.6.2009 julkaistusta ytimen 2.6.30-versiosta lähtien enää oletuksena päivitetä kuin silloin, jos se on yli vuorokauden ikäinen tai vanhempi kuin mtime tai ctime [1]. Tätä asetusta voi muuttaa tiedostojärjestelmän liitosasetusten avulla.
Atime saattaa muutenkin jäädä päivittymättä esimerkiksi NFS:n välimuistitoimintojen takia. Tiedostojen varmuuskopiointi, indeksointi yms. voivat myös aiheuttaa aikaleiman "aiheetonta" päivittymistä, jolloin sen informaatioarvo heikkenee.
Asetukset[muokkaa]
Tiedostojärjestelmää liitettäessä on käytössä neljä erilaista atime-asetusta:
- strictatime - muutetaan aina atime-leimoja
- nodiratime - ei muuteta hakemistojen atime-leimoja
- relatime - muutetaan atimea vain silloin, kun se on vanhempi kuin mtime tai ctime, tai uudemmissa versioissa myös silloin, jos leima on yli vuorokauden ikäinen (oletus)
- noatime - ei koskaan muuteta atimea
Asetusta noatime voi käyttää, mikäli käytössä ei ole tiettyjä ohjelmia (esimerkiksi mutt-sähköpostiohjelma), jotka tarvitsevat tietoa siitä, milloin tiedostoa on viimeksi luettu sen muokkaamisen jälkeen (eli esimerkiksi onko tiedostossa uusia viestejä). Työpöytäympäristöjen ohjelmat valvovat yleensä näitä tiedostoja eri tekniikalla.
atimen täysi päivittämättä jättäminen tarkoittaa, että käyttämättömiä ja siten luultavasti hyödyttömiä tiedostoja on vaikeampi löytää. atimen käyttö tähän tarkoitukseen tosin edellyttää, ettei atime päivity varmuuskopioimisen, tiedostojen indeksoinnin tms. yhteydessä.
Jo liitetyn tiedostojärjestelmän voi muuttaa käyttämään esimerkiksi noatimea komennolla
mount -o remount,noatime liitospiste
Pysyvämmin asetuksen saa käyttöön lisäämällä sen fstabiin (neljäs sarake) esimerkiksi seuraavasti:
/dev/hdc1 /home ext3 defaults,noatime 0 2
atimen saa väliaikaisesti kokonaan käyttöön komennolla
mount -o remount,strictatime liitospiste
esimerkiksi silloin, jos haluaa tarkistaa, lukeeko ohjelma sitä tiedostoa mitä sen luulee lukevan.
Aikaleiman käyttö[muokkaa]
Tiedoston atime-leiman näkee komennolla
ls -lu
mtimen komennolla
ls -l
ja ctimen komennolla
ls -lc
Vastaavasti tiedostot voi järjestää kyseisen aikaleiman mukaan valitsimella -t
ls -lct ls -ct
Tiedostoja voi etsiä aikaleiman perusteella esimerkiksi komennolla find. Aika ilmoitetaan joko kokonaisina päivinä tai minuutteina (+/-n) tai vertaamalla toisen tiedoston vastaavaan aikaleimaan.
Luetellaan väliaikaistiedostojen hakemistoissa ja niiden alihakemistoissa olevat viime neljännestunnin aikana ja viimeksi edellisviikkona käytetyt tiedostot:
find /tmp -amin -15 -print find /var/tmp -atime +7 -atime -14 -print
Luetellaan käyttäjien sähköpostihakemistojen vuoden muuttumatta säilyneet tiedostot:
find /home/*/.{Mail,mail} -mtime +365 -print
Putkitetaan lista mtimen mukaan changelog-tiedostoa uudemmista työhakemistossa ja sen alihakemistoissa olevista tiedostoista sivutusohjelmalle:
find . -newer changelog -print | less
Listataan ohjelman ajon aikana ctimen mukaan muuttuneet tiedostot kotihakemiston .gnome-hakemistoissa kaikkine tietoineen:
touch aikaleima.tmp ohjelma find ~/.gnome* -cnewer aikaleima.tmp -ls rm aikaleima.tmp