La command `ls -ltu` ne parvient pas à listr les dossiers / files en fonction du dernier time consulté

Tout d'abord sur votre bureau Linux créer 2 dossiers.

a b 

Maintenant, lancez-le dans le terminal

 ls -ltu 

le résultat est

 drwxr-xr-x 2 root root 4096 Aug 30 20:33 b drwxr-xr-x 2 root root 4096 Aug 30 20:33 a 

Cliquons sur un et le réexécutons.
Même résultat exact que ci-dessus.

Cliquons sur b et relanceons-le.
Même résultat exact que ci-dessus.

J'essaie d'organiser les dossiers en fonction de celui sur lequel on a cliqué pour la dernière fois. Ils ont recommandé ls -ltu mais ça ne fonctionne pas.

Vous pouvez utiliser la command stat pour voir les informations relatives au time concernant les files et les directorys.

Exemple

 $ mkdir ab $ ll total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b $ ls -ltu total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 b 

Sortie de stat

Regardons maintenant ces directorys avec la command stat :

 $ stat ab File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 

Accéder à a

Maintenant, accédons au directory a :

 $ ls a 

Maintenant, revérifions les directorys avec stat :

 $ stat ab File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:33.221267791 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:03.621936538 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 

Nous pouvons voir que nous avons effectivement effectué l'information stat de l'annuaire avec ce ls a :

avant

 Access: 2013-08-31 00:08:03.621936538 -0400 

après

 Access: 2013-08-31 00:08:33.221267791 -0400 

Accéder à b

Maintenant, si nous accédons au directory b , ls b :

 $ ls b $ ls -ltu total 8 drwxrwxr-x 2 saml saml 4096 Aug 31 00:17 b drwxrwxr-x 2 saml saml 4096 Aug 31 00:08 a 

Sortie de stat

Nous pouvons voir que le time d'access a changé et que la sortie ci-dessus du ls -ltu est comme elle devrait l'être:

 $ stat ab File: `a' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643285 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:08:33.221267791 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 File: `b' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 5643286 Links: 2 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-08-31 00:17:15.279776957 -0400 Modify: 2013-08-31 00:08:03.621936538 -0400 Change: 2013-08-31 00:08:03.621936538 -0400 

Nous pouvons encore voir qu'un simple ls b causé le time d'access pour être mis à jour:

avant

 Access: 2013-08-31 00:08:03.621936538 -0400 

après

 Access: 2013-08-31 00:17:15.279776957 -0400 

Résumé

En regardant l'parsing ci-dessus, je ne vois aucune raison pour laquelle ls -ltu ne vous montrerait pas les directorys sortingés par leurs time d'access comme prévu.

Alors, quoi de neuf?

Peut-être avez-vous monté le directory de sorte que les time d'access ne soient pas suivis? Cela expliquerait pourquoi il n'y a pas de changement.

Si vous regardez dans la page man pour la command mount, vous verrez ces 2 options définies:

 atime Update inode access time for each access. See also the ssortingctatime mount option. noatime Do not update inode access times on this filesystem (eg, for faster access on the news spool to speed up news servers). 

Vous pouvez vérifier comment votre système de files est monté en utilisant la command mount . Si un périphérique est monté de sorte que l'option noatime s'affiche, il est monté pour que le time d'access (atime) ne soit pas suivi. Ceci est fait généralement pour augmenter les performances.

Exemple

 $ mount /dev/mapper/vg_grinchy-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) tmpfs on /dev/shm type tmpfs (rw) /dev/sda5 on /boot type ext4 (rw) /dev/mapper/vg_grinchy-lv_home on /home type ext4 (rw) gvfs-fuse-daemon on /home/saml/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=saml) 

C'est exactement ce dont vous avez besoin:

 ls -Aru | tail -n 1