Formas de pagamento Abuse

O que o comando stat faz no Linux

14.11.2021, 16:15

Cada ficheiro e pasta no sistema de ficheiros tem uma estrutura denominada Inode, onde são armazenados os metadados deste objeto. Esta estrutura armazena o proprietário, o grupo de proprietários, a hora de modificação, a criação e o acesso ao ficheiro, bem como outras informações. Pode ser vista não só com a ajuda de ferramentas de depuração do sistema de ficheiros. Certas informações são mostradas pelo utilitário ls, mas se precisar de mais, pode usar o comando stat. De seguida, vamos dizer-lhe como utilizar este comando no Linux.

O que faz o comando

A sintaxe do comando é simples. Precisa que lhe sejam passadas opções e o caminho para o ficheiro para o qual quer ver a informação:

$ stat [options] /path/to/file

Não é necessário passar opções e não há muitas delas:

-L, dereference - mostra a informação do ficheiro em vez de uma ligação simbólica;

-f, --file-system - mostra informação sobre o sistema de ficheiros no qual o ficheiro está localizado;

-c, --format- permite-lhe especificar o formato de saída em vez do formato padrão, cada ficheiro é emitido a partir de uma nova linha;

--printf - semelhante a --format, só que para uma nova linha deve usar ;

-t, --terse - mostra a informação de uma forma muito breve, numa única linha;

--version - mostra a versão do utilitário.

Vamos ver alguns exemplos de uso. Para ver informação sobre um ficheiro, é suficiente correr o programa sem opções passando-lhe o caminho para o ficheiro, por exemplo /etc/passwd:

$ stat /etc/passwd

Saída do programa:

Ficheiro- o caminho para o ficheiro para o qual a informação é mostrada;

Tamanho- o tamanho do ficheiro em bytes;

BlocoIO- o tamanho do bloco do sistema de ficheiros em bytes;

Blocos- número de blocos do sistema de ficheiros ocupados pelo ficheiro;

Dispositivo- identificador do dispositivo, por exemplo, HDD, no qual o ficheiro é guardado;

Inode - número único de Inode deste ficheiro;

Ligações- número de ligações físicas a este ficheiro;

Acesso - direitosde acesso ao ficheiro;

Uid - identificador e nome do utilizador-proprietário do ficheiro;

Gid - identificador e nome do grupo do ficheiro;

Acesso- a hora do último acesso ao ficheiro;

Modificar- hora em que o conteúdo do ficheiro foi modificado pela última vez;

Alterado- a hora em que os atributos do ficheiro ou o conteúdo do ficheiro foram alterados pela última vez;

Criado(Nascimento) - reservado para mostrar a data de criação original do ficheiro, mas ainda não implementado.

Precisamos de falar um pouco mais sobre o formato da hora. Por exemplo, a hora do último acesso ao ficheiro é 2020-12-02 18:25:01.043831739 +0200. Esta hora é apresentada tendo em conta o fuso horário. E os números +0200 mostram que o fuso horário do computador que criou ou modificou este ficheiro é duas horas superior ao UTC, ou seja, Europa/Kiev no horário de inverno.

Se você tentar passar uma ligação simbólica para o utilitário, ele mostrará apenas informações do Inode da própria ligação:

$ stat /etc/passwdlin

Para ver informações sobre o ficheiro apontado pela ligação, use a opção -L:

$ stat -L /etc/passwdlink

É possível passar mais de um ficheiro:

$ stat /etc/passwd /etc/group

Para formatar a saída, pode-se usar as seguintes seqüências de caracteres:

%A - direitos de acesso;

%b - número de blocos ocupados;

%F - tipo de ficheiro;

%g - identificador do grupo de ficheiros;

%G - nome do grupo de ficheiros;

%i - identificador de inode;

%n - nome do ficheiro;

%s - tamanho do ficheiro;

%u - identificador do proprietário do ficheiro;

%U - nome do proprietário do ficheiro;

%x - hora do último acesso;

%y - hora da última modificação do conteúdo;

%z - hora da última modificação do conteúdo ou dos atributos.

Estas não são todas as sequências possíveis, pode encontrar mais na ajuda do utilitário:

$ man stat

Por exemplo, vamos mostrar apenas o nome de um ficheiro e a hora da última modificação do seu conteúdo:

$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group

Se quiser ver informações sobre o sistema de ficheiros onde o ficheiro está localizado, deve usar a opção -f:

$ stat -f /etc/passwd

Vejamos o que significam os campos que o utilitário exibe:

Arquivo- o nome do arquivo;

Type- tipo de sistema de ficheiros;

ID - identificador do sistema de ficheiros;

Comprimento do nome(Namelen) - o comprimento máximo do nome no sistema de ficheiros;

Tamanhodo bloco- a quantidade de dados num pedido de leitura ou escrita para uma velocidade óptima;

Tamanho dobloco fundamental- tamanho do bloco físico no sistema de ficheiros.

Seguem-se o número total de blocos no sistema e o número de blocos livres.