Pesquisando para a minha série de vídeos e artigos sobre a criação de um monitor/indicador de atualizações para o Xfce e o i3wm, eu me deparei com a necessidade de checar a data e a hora da última modificação do arquivo /var/cache/apt/pkgcache.bin
, que é alterado sempre que nós executamos um apt update
ou um apt-get update
. As pesquisas continuam, mas eu queria aproveitar para compartilhar aqui as três forma que eu conheço para fazer isso.
Comando 'ls'
A primeira forma de conseguir essa informação, talvez o primeiro impulso de todos nós, seria através do comando ls
. Na opção de exibição em lista, ls -l
, as colunas 6, 7 e 8 mostra, respectivamente, o mês, o dia e a hora da última modificação dos arquivos e pastas. para extrair apenas esses três valores, bastaria processar a saída com o awk
:
ls -l /caminho/arquivo | awk '{ print $6" "$7" "$8 }'
Testando com o meu arquivo de cachê do apt...
:~$ ls -l /var/cache/apt/pkgcache.bin | awk '{print $6" "$7" "$8}'
jul 29 22:32
:~$
Comando 'stat'
O comando stat
pode não ser tão famoso quanto o ls
, mas é uma boa ferramenta para fornecer informações diversas sobre o status de um arquivo. A saída padrão do comando seria algo assim:
:~$ stat /var/cache/apt/pkgcache.bin
Arquivo: /var/cache/apt/pkgcache.bin
Tamanho: 33969680 Blocos: 66352 bloco de E/S: 4096 arquivo comum
Dispositivo: 802h/2050d Inode: 2883800 Links: 1
Acesso: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Acesso: 2019-07-29 22:32:14.809337579 -0300
Modificação: 2019-07-29 22:32:14.841337632 -0300
Alteração: 2019-07-29 22:32:14.841337632 -0300
Criação: -
:~$
Mas, sem recorrer a nenhuma filtragem por outros comandos, nós podemos fazer com ele exiba apenas o que nós queremos. Segundo o manual (man stat
)...
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each use of FORMAT
...
The valid format sequences for files (without --file-system):
...
%y time of last data modification, human-readable
...
Ou seja, executando o stat
com o parâmetro -c %y
, nós teremos apenas a data da última modificação do arquivo formatada de forma humanamente legível, assim:
:~$ stat -c '%y' /var/cache/apt/pkgcache.bin
2019-07-29 22:32:14.841337632 -0300
Comando 'date'
Pouca gente sabe que o comando date pode ser usado para outras coisas além de exibir e formatar a data e a hora do sistema, e uma dessas coisas é a data e a hora da última modificação de um arquivo. Segundo o manual, existe o argumento...
-r, --reference=FILE
display the last modification time of FILE
Portanto, esta seria a saída do comando date -r /caminho/arquivo
:
:~$ date -r /var/cache/apt/pkgcache.bin
seg jul 29 22:32:14 -03 2019
Mas, a grande vantagem do comando date
é que ele ainda permite a formatação desta saída, como pode ser visto abaixo:
:~$ date -r /var/cache/apt/pkgcache.bin +'%b %d,%Y %R'
jul 29,2019 22:32
:~$
Tempos de execução
Se o parâmetro fosse apenas a simplicidade, eu escolheria sempre o comando date
. Mas, vamos testar o tempo de execução de cada uma dessas três alternativas:
:~$ time ls -l /var/cache/apt/pkgcache.bin | awk '{print $6" "$7" "$8}'
jul 29 22:32
real 0m0,009s
user 0m0,001s
sys 0m0,014s
...
:~$ time stat -c "%y" /var/cache/apt/pkgcache.bin
2019-07-29 22:32:14.841337632 -0300
real 0m0,004s
user 0m0,004s
sys 0m0,000s
...
:~$ time date -r /var/cache/apt/pkgcache.bin +'%b %d,%Y %R'
jul 29,2019 22:32
real 0m0,003s
user 0m0,003s
sys 0m0,000s
Bom, parece que, além de mais prático, o comando date
também é o método mais rápido.
Dúvidas? Correções? Outras ideias?
Sirva-se dos comentários!
Nenhum comentário:
Postar um comentário
O sistema de comentários do Blogspot é um lixo e praticamente me obriga a liberar ou moderar todos os comentários. Portanto, eu peço perdão antecipadamente caso o seu comentário demore para aparecer.
Mas não se acanhe por causa disso! :-)