GNU/Linux >> Znalost Linux >  >> Linux

Doba přístupu k souboru se v ubuntu 12.04 neaktualizuje

Místo cat musíte použít touch (nebo něco, co vynutí zápis), nebo explicitně deklarující atime ve vaší možnosti připojení.

Ubuntu používá relatime jako výchozí. Linuxové jádro ve skutečnosti používá relatime jako výchozí od verze 2.6.30 výše. Tím se aktualizují pouze určité hodnoty, když se přistupuje k souborům, nikoli ke všem. Tím se změní cat chování, takže nebude aktualizovat přístupový čas. Toto je výchozí nastavení v možnostech připojení Ubuntu. Jediným způsobem, jak upravit dobu přístupu, je dotknout se souboru (neboli vynucení zápisu) namísto pouhého čtení.

Důvodem je výkon. Pokud každé čtení vyžaduje zápis, jak vyžaduje POSIX, bude účinnost disků a zařízení na bázi flash horší. To se také zdá být kontraproducentem v souborových systémech pouze pro čtení.

V Ask Ubuntu a Super User je na toto téma spousta diskuzí:

  • https://askubuntu.com/q/2099/169736
  • https://superuser.com/q/464290/235569

Při práci s atime si musíte být vědomi 3 možností připojení . První 2 znáte z manuálové stránky mount

úryvky

atime  Do not use noatime feature, then the inode access time is controlled 
       by kernel defaults. See also the description for strictatime and  
       relatime mount options.

noatime
          Do not update inode access times on this filesystem (e.g., for 
          faster access on the news spool to speed up news servers).

Další možností, kterou pravděpodobně neznáte a která způsobuje váš smutek, je tato, která je výchozí od jádra 2.6.30:

relatime
          Update  inode  access times relative to modify or change time.
          Access time is only updated if the previous access time was 
          earlier than the current modify or change time. (Similar to 
          noatime, but doesn't break mutt or other applications that need to 
          know if a file has  been  read since the last time it was 
          modified.)

          Since  Linux 2.6.30, the kernel defaults to the behavior provided 
          by this option (unless noatime was  specified), and the 
          strictatime option is required to obtain traditional semantics. In 
          addition, since Linux 2.6.30, the file's last access time is 
          always   updated   if   it   is more than 1 day old.

Zda jsou tyto možnosti nastaveny na souborovém systému, můžete zkontrolovat pod /proc/mounts .

Příklad

$ head -5 /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=3976812k,nr_inodes=994203,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0

Rozdíl oproti relatime vs. noatime je, že provede změny, ale pouze tehdy, když je aktuální přístupový čas po předchozím přístupovém čase.

Čas přístupu se aktualizuje pouze v případě, že předchozí čas přístupu byl dřívější než aktuální čas úpravy nebo změny. (Podobné jako noatime, ale neruší mutt nebo jiné aplikace, které potřebují vědět, zda byl soubor přečten od poslední úpravy.)


Linux
  1. Jak auditovat přístup k souborům v systému Linux

  2. soubor:příkaz nenalezen

  3. souběžný přístup k souboru linux

  1. Linux File Access Monitoring?

  2. Get Age Of Given File?

  3. shebang nebo ne shebang

  1. Kdy byl soubor vytvořen?

  2. Ubuntu – Linux – Čas změny souboru versus čas úpravy?

  3. Pozastavení nefunguje po aktualizaci na Ubuntu 14.04 z 13.10?