O comando 'ls -ltu' não consegue listar pastas / arquivos com base no último tempo acessado

1

Primeiro, no seu desktop linux, crie 2 pastas.

a
b

Agora execute isso no terminal

ls -ltu

o resultado é

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

Vamos clicar em um e executá-lo novamente.
O mesmo resultado exato acima.

Vamos clicar em b e executá-lo novamente.
 O mesmo resultado exato acima.

Estou tentando organizar pastas com base em qual delas foi clicado pela última vez. Eles recomendaram ls -ltu , mas não está funcionando.

    
por user249775 31.08.2013 / 05:51

2 respostas

2

Você pode usar o comando stat para ver informações relacionadas ao horário de arquivos & diretórios.

Exemplo

$ mkdir a b

$ 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

Saída do stat

Agora vamos ver esses diretórios com o comando stat :

$ stat a b
  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

Acessando a

Agora vamos acessar o diretório a :

$ ls a

Agora vamos verificar novamente os diretórios com stat :

$ stat a b
  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

Podemos ver que realmente afetamos as informações de estatísticas do diretório com ls a :

antes

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

depois

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

Acessando b

Agora, se acessarmos o diretório 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

Saída do stat

Podemos ver que o tempo de acesso foi alterado e a saída acima do ls -ltu está como deveria:

$ stat a b
  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

Podemos ver novamente que um ls b simples fez com que o tempo de acesso fosse atualizado:

antes

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

depois

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

Resumo

Ao analisar a análise acima, não vejo nenhum motivo pelo qual ls -ltu não mostre os diretórios classificados pelos tempos de acesso esperados.

Então, o que está acontecendo?

Talvez você tenha o diretório montado de forma que os horários de acesso não estejam sendo rastreados? Isso explicaria por que não há mudança.

Se você olhar na man page do comando mount, verá essas duas opções definidas:

atime     Update inode access time for each access. See also the 
          strictatime mount option.

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

Você pode verificar como seu sistema de arquivos é montado usando o comando mount . Se um dispositivo for montado de forma que a opção noatime apareça, ele estará sendo montado de forma que o tempo de acesso (tempo) não esteja sendo rastreado. Isso é feito normalmente para aumentar o desempenho.

Exemplo

$ 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)
    
por 31.08.2013 / 06:26
-2

Isso é exatamente o que você precisa:

ls -Aru | tail -n 1  
    
por 21.10.2014 / 03:08