GNU/Linux >> Linux Esercitazione >  >> Linux

Il tempo di accesso al file non si aggiorna in Ubuntu 12.04

Invece di cat devi usare touch (o qualcosa che forza una scrittura), o dichiarando esplicitamente atime nell'opzione di montaggio.

Ubuntu usa relatime come predefinito. Il kernel di Linux, infatti, utilizza relatime come impostazione predefinita dalla versione 2.6.30 in poi. Questo aggiorna solo determinati valori quando si accede ai file anziché a tutti. Questo modifica il cat comportamento in modo che non aggiorni l'ora di accesso. Questa è l'impostazione predefinita nelle opzioni di montaggio di Ubuntu. L'unico modo per modificare il tempo di accesso è toccare il file (ovvero forzare una scrittura) invece di una semplice lettura.

La ragione di questo è la performance. Se ogni lettura richiede una scrittura come richiede POSIX, l'efficienza dei dischi e dei dispositivi basati su flash sarà peggiore. Questo sembra anche controproducente nei filesystem di sola lettura.

Ci sono molte discussioni su questo argomento in Ask Ubuntu e Super User:

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

Ci sono 3 opzioni di montaggio di cui generalmente devi essere a conoscenza quando hai a che fare con atime . Hai familiarità con i primi 2, dalla pagina man di mount

estratti

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).

L'altra opzione con cui probabilmente non hai familiarità e quella che causa il tuo dolore è questa, che è stata l'impostazione predefinita dal kernel 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.

Puoi controllare se queste opzioni sono impostate su un filesystem guardando sotto /proc/mounts .

Esempio

$ 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

La differenza con relatime contro noatime è che apporterà modifiche, ma solo quando l'ora di accesso corrente è successiva all'ora di accesso precedente.

L'ora di accesso viene aggiornata solo se l'ora di accesso precedente era precedente all'ora di modifica o modifica corrente. (Simile a noatime, ma non interrompe mutt o altre applicazioni che devono sapere se un file è stato letto dall'ultima volta che è stato modificato.)


Linux
  1. R 3.5.0 non funziona su Ubuntu 18.04?

  2. Comprensione dei timestamp dei file Mac

  3. accesso simultaneo al file linux

  4. Programmazione Prolog in Ubuntu

  5. Guarda Filesystem in tempo reale su OS X e Ubuntu

Come accedere ai file di Windows da Ubuntu?

L'indicatore dell'ora non mostra la data/l'ora?

Come estrarre un file RAR su Ubuntu

Come aggiungere un file di scambio su Ubuntu 20.04

Come controllare l'accesso ai file su Linux

file:comando non trovato