Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
104.7 Lição 1
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
  2. 104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  3. 104.7 Lição 1

104.7 Lição 1

Certificação:

LPIC-1

Versão:

5.0

Tópico:

104 Dispositivos, sistemas de arquivos do Linux, hierarquia padrão de sistemas de arquivos

Objetivo:

104.7 Encontrar arquivos de sistema e colocar arquivos no local correto

Lição:

1 de 1

Introdução

As distribuições Linux vêm em todas as formas e tamanhos, mas uma coisa que quase todas têm em comum é o fato de seguirem o Filesystem Hierarchy Standard (FHS), que define um “layout padrão” para o sistema de arquivos. Isso simplifica muito a interoperação e administração do sistema. Nesta lição, você aprenderá mais sobre este padrão e como localizar arquivos em um sistema Linux.

O Filesystem Hierarchy Standard

O Filesystem Hierarchy Standard (FHS) é um projeto da Linux Foundation para padronizar a estrutura de diretórios e o conteúdo dos diretórios nos sistemas Linux. A conformidade com o padrão não é obrigatória, mas a maioria das distribuições o segue.

Note

Quem quiser saber mais sobre a organização dos sistemas de arquivos pode consultar a especificação do FHS 3.0 specification, disponível em vários formatos em: http://refspecs.linuxfoundation.org/fhs.shtml

De acordo com o padrão, a estrutura de diretórios básica é a seguinte:

/

Este é o diretório raiz, o primeiro da hierarquia. Todos os outros diretórios ficam dentro dele. Um sistema de arquivos muitas vezes é comparado a uma “árvore”; nesse caso, este seria o “tronco” ao qual todos os galhos se conectam.

/bin

Binários essenciais, disponível para todos os usuários.

/boot

Arquivos necessários ao processo de inicialização, incluindo o disco RAM inicial (initrd) e o próprio kernel do Linux.

/dev

Arquivos de dispositivos. Podem ser dispositivos físicos conectados ao sistema (por exemplo, /dev/sda seria o primeiro disco SCSI ou SATA) ou dispositivos virtuais fornecidos pelo kernel.

/etc

Arquivos de configuração específicos ao hospedeiro. Se necessário, os programas podem criar subdiretórios sob /etc para armazenar diversos arquivos de configuração.

/home

Cada usuário do sistema tem um diretório “inicial” para armazenar arquivos pessoais e preferências, a maioria deles localizados sob /home. Geralmente, o diretório home tem o mesmo nome do usuário, de modo que o usuário John teria seu diretório sob /home/john. As exceções são o superusuário (root), que tem um diretório separado (/root), e certos usuários do sistema.

/lib

Bibliotecas compartilhadas necessárias para inicializar o sistema operacional e executar os binários que estão em /bin e /sbin.

/media

Mídias removíveis montadas pelo usuário, como pendrives, leitores de CD e DVD-ROM, disquetes, cartões de memória e discos externos, são montadas aqui.

/mnt

Ponto de montagem para sistemas de arquivos montados temporariamente.

/opt

Pacotes de software opcionais.

/root

Diretório inicial do superusuário (root).

/run

Dados variáveis de tempo de execução.

/sbin

Binários do sistema.

/srv

Dados de serviços fornecidos pelo sistema. Por exemplo, as páginas fornecidas por um servidor web poderiam ser armazenadas em /srv/www.

/tmp

Arquivos temporários.

/usr

Dados de usuários de apenas leitura, incluindo dados utilizados por certos utilitários e aplicações secundárias.

/proc

Sistema de arquivos virtual contendo dados relacionados a processos em execução.

/var

Dados variáveis gravados durante a operação do sistema, incluindo fila de impressão, dados de log, caixas de entrada, arquivos temporários, cache do navegador etc.

Tenha em mente que alguns desses diretórios, como /etc, /usr e /var, contêm toda uma hierarquia de subdiretórios.

Arquivos Temporários

Os arquivos temporários são arquivos usados pelos programas para armazenar dados que serão necessários apenas por um curto período de tempo — por exemplo, dados de processos em execução, logs de falhas, arquivos de rascunho de um salvamento automático, arquivos intermediários usados durante uma conversão, arquivos de cache e assim por diante.

Localização dos arquivos temporários

A versão 3.0 do Filesystem Hierarchy Standard (FHS) define locais padrão para os arquivos temporários nos sistemas Linux. Cada local tem uma finalidade e um comportamento diferentes, e é recomendável que os desenvolvedores sigam as convenções definidas pelo FHS ao gravar dados temporários no disco.

/tmp

De acordo com o FHS, não se deve pressupor que os arquivos escritos aqui serão preservados entre as invocações de um programa. A recomendação é que esse diretório seja limpo (todos os arquivos apagados) durante a inicialização do sistema, embora isso não seja obrigatório.

/var/tmp

Outro local para arquivos temporários, mas este não deve ser limpo durante a inicialização do sistema, ou seja, os arquivos armazenados aqui geralmente persistem entre as reinicializações.

/run

Este diretório contém arquivos variáveis de tempo de execução usados pelos processos ativos, como os arquivos identificadores de processo (.pid). Os programas que precisam de mais de um arquivo de tempo de execução podem criar subdiretórios aqui. Este local deve ser limpo durante a inicialização do sistema. Antigamente essa finalidade pertencia a /var/run e, em alguns sistemas, /var/run pode ser um link simbólico para /run.

Observe que nada impede o programa de criar arquivos temporários em outro local do sistema, mas é recomendável respeitar as convenções definidas pelo FHS.

Busca de arquivos

Para pesquisar por arquivos em um sistema Linux, podemos usar o comando find. Esta é uma ferramenta muito poderosa, rica em parâmetros configuráveis para modificar a saída exatamente de acordo com suas necessidades.

Para começar, o find precisa de dois argumentos: um ponto de partida e o que procurar. Por exemplo, para pesquisar todos os arquivos no diretório atual (e seus subdiretórios) cujo nome termina em .jpg, usaríamos:

$ find . -name '*.jpg'
./pixel_3a_seethrough_1.jpg
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Essa busca corresponde a qualquer arquivo cujos últimos quatro caracteres do nome sejam .jpg, não importa o que venha antes, já que * é um curinga para “qualquer coisa”. No entanto, veja o que acontece se outro * for adicionado no final do padrão:

$ find . -name '*.jpg*'
./pixel_3a_seethrough_1.jpg
./Pentaro.jpg.zip
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

O arquivo Pentaro.jpg.zip (destacado acima) não foi incluído na lista anterior, porque embora contenha .jpg em seu nome, não corresponde ao padrão, já que há caracteres extras depois dele. O novo padrão significa “qualquer coisa .jpg qualquer coisa”, então ele passa a corresponder.

Tip

Lembre-se de que o parâmetro -name diferencia maiúsculas de minúsculas. Se quiser fazer uma pesquisa que não diferencia maiúsculas de minúsculas, use -iname.

A expressão *.jpg deve ser posta entre aspas simples, para evitar que o shell interprete o padrão como um comando. Experimente sem as aspas e veja o que acontece.

Por padrão, o find começa no ponto de partida e vai descendo pelos subdiretórios (e subdiretórios desses subdiretórios) encontrados. Para restringir esse comportamento, use os parâmetros -maxdepth N, onde N é o número máximo de níveis.

Para pesquisar apenas no diretório atual, usaríamos -maxdepth 1. Suponha que você tem a seguinte estrutura de diretório:

directory
├── clients.txt
├── partners.txt -> clients.txt
└── somedir
    ├── anotherdir
    └── clients.txt

Para pesquisar dentro de somedir, você precisará usar -maxdepth 2 (o diretório atual +1 nível abaixo). Para pesquisar dentro de anotherdir, -maxdepth 3 seria necessário (o diretório atual +2 níveis abaixo). O parâmetro -mindepth N faz o contrário, pesquisando apenas em diretórios no mínimo N níveis abaixo.

O parâmetro -mount pode ser usado para evitar que o find mergulhe em sistemas de arquivos montados. Também é possível restringir a pesquisa a tipos específicos de sistemas de arquivos usando o parâmetro -fstype. Assim, find /mnt -fstype exfat -iname "*report*" buscaria somente dentro de sistemas de arquivos exFAT montados sob /mnt.

Buscando por atributos

Podemos usar os parâmetros abaixo para pesquisar arquivos com atributos específicos, como os que podem ser gravados por seu usuário, os que têm um conjunto específico de permissões ou que têm um determinado tamanho:

-user USERNAME

Encontra arquivos de que o usuário USERNAME é proprietário.

-group GROUPNAME

Encontra arquivos de que o grupo GROUPNAME é proprietário.

-readable

Encontra arquivos que podem ser lidos pelo usuário atual.

-writable

Encontra arquivos que podem ser gravados pelo usuário atual.

-executable

Encontra arquivos que podem ser executados pelo usuário atual. No caso dos diretórios, ele encontrará quaisquer diretórios em que o usuário pode entrar (permissão x).

-perm NNNN

Encontra quaisquer arquivos que tenham exatamente a permissão NNNN. Por exemplo, -perm 0664 corresponde a quaisquer arquivos que o usuário e grupo podem ler e gravar e que outros podem ler (ou rw-rw-r--).

Adicione um - antes de NNNN para procurar por arquivos que tenham pelo menos a permissão especificada. Por exemplo, -perm -644 encontraria arquivos que tenham permissões de ao menos 644 (rw-r—​r--). Isso inclui arquivos com 664 (rw-rw-r--) ou mesmo 775 (rwxrwx-r-x).

-empty

Encontra arquivos e diretórios vazios.

-size N

Encontra qualsquer arquivos de tamanho N, onde N por padrão é um número de blocos de 512 bytes. Podemos adicionar sufixos a N para as outras unidades: Nc conta o tamanho em bytes, Nk em kibibytes (KiB, múltiplos de 1024 bytes), NM em mebibytes (MiB, múltiplos de 1024 * 1024) e NG para gibibytes (GiB, múltiplos de 1024 * 1024 * 1024).

Aqui também, podemos usar os prefixos + ou - (que aqui significam maior que e menor que) para buscar por tamanhos relativos. Por exemplo, -size -10M corresponderia a qualquer arquivo menor de 10 MiB.

Assim, para pesquisar arquivos em seu diretório inicial que contenham o padrão report (sem distinção entre maiúsculas e minúsculas) em qualquer parte do nome, tenham permissões 0644, foram acessados há 10 dias e cujo tamanho é de pelo menos 1 Mib, usaríamos

$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M

Busca por tempo

Além da busca por atributos, também é possível realizar buscas por data e hora, encontrando arquivos que foram acessados, tiveram seus atributos alterados ou foram modificados durante um determinado período de tempo. Os parâmetros são:

-amin N, -cmin N, -mmin N

Corresponde a arquivos que foram acessados, tiveram atributos alterados ou foram modificados (respectivamente) N minutos atrás.

-atime N, -ctime N, -mtime N

Corresponde a arquivos que foram acessados, tiveram atributos alterados ou foram modificados N*24 horas atrás.

Para -cmin N e -ctime N, qualquer alteração de atributo é levada em conta, incluindo mudanças nas permissões, leitura ou gravação no arquivo. Isso torna esses parâmetros especialmente poderosos, uma vez que praticamente qualquer operação envolvendo o arquivo fará com que ele corresponda aos parâmetros da busca.

O exemplo a seguir corresponderia a qualquer arquivo no diretório atual que foi modificado há menos de 24 horas e é maior que 100 MiB:

$ find . -mtime -1 -size +100M

Usando locate e updatedb

locate e updatedb são comandos que podem ser usados para encontrar rapidamente um arquivo correspondente a um padrão dado em um sistema Linux. Mas, ao contrário de find, locate não pesquisa por um padrão no sistema de arquivos: em vez disso, ele consulta um banco de dados construído com a execução do comando updatedb. Os resultados são muito velozes, mas podem ser imprecisos dependendo da data da última atualização do banco de dados.

A maneira mais simples de usar locate é simplesmente fornecer a ele um padrão a pesquisar. Por exemplo, para encontrar todas as imagens JPEG em seu sistema, você usaria locate jpg. A lista de resultados pode ser bastante longa, mas teria a seguinte aparência:

$ locate jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Quando buscamos pelo padrão jpg, o locate mostra qualquer coisa que contenha esse padrão, não importa o que venha antes ou depois. Você pode ver um exemplo disso no arquivo jpg_specs.doc na lista acima: ele contém o padrão, mas sua extensão não é jpg.

Tip

Com locate, estamos procurando por padrões, e não por extensões de arquivo.

Em princípio, o padrão diferencia maiúsculas de minúsculas. Isso significa que arquivos contendo .JPG não seriam mostrados, pois o padrão está em letras minúsculas. Para evitar isso, passe o parâmetro -i para locate. Repetindo nosso exemplo anterior:

$ locate -i .jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg

Observe que o arquivo Mate1_old.JPG, destacado em negrito acima, não estava presente na listagem anterior.

Para passar vários padrões para locate, basta separá-los com espaços. O exemplo abaixo faria uma busca sem distinção entre maiúsculas e minúsculas por quaisquer arquivos que correspondam aos padrões zip e jpg:

$ locate -i zip jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/OPENMSXPIHAT.zip
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/gbs-control-master.zip
/home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Ao usar múltiplos padrões, você pode solicitar ao locate que exiba apenas os arquivos que correspondam a todos eles. Isso é feito com a opção -A. O exemplo a seguir mostraria qualquer arquivo que corresponda aos padrões .jpg e .zip:

$ locate -A .jpg .zip
/home/carol/Downloads/Pentaro.jpg.zip

Se quiser contar o número de arquivos que correspondem a um determinado padrão em vez de mostrar o caminho completo, você pode usar a opção -c. Por exemplo, para contar o número de arquivos .jpg em um sistema:

$ locate -c .jpg
1174

Um problema com o locate é que ele mostra apenas as entradas presentes no banco de dados gerado pelo updatedb (localizado em /var/lib/mlocate.db). Se o banco de dados estiver desatualizado, a saída poderá mostrar arquivos que foram excluídos desde a última vez em que foi atualizado. Uma maneira de evitar isso é adicionar o parâmetro -e, que fará com que ele verifique se o arquivo ainda existe antes de mostrá-lo na saída.

Obviamente, isso não fará com que os arquivos criados após a última atualização do banco de dados apareçam. Para isso será necessário atualizar o banco de dados com o comando updatedb. O tempo para a execução dessa operação dependerá da quantidade de arquivos em seu disco.

Controlando o comportamento de updatedb

O comportamento do updatedb pode ser controlado pelo arquivo /etc/updatedb.conf. Trata-se de um arquivo de texto no qual cada linha controla uma variável. As linhas em branco são ignoradas e as linhas que começam com o caractere # são tratadas como comentários.

PRUNEFS=

Quaisquer tipos de sistemas de arquivos indicados após este parâmetro não serão analisados pelo updatedb. A lista de tipos deve ser separada por espaços e os tipos em si não diferenciam maiúsculas de minúsculas, de forma que NFS e nfs são a mesma coisa.

PRUNENAMES=

Lista de nomes de diretórios separados por espaços que não deverá ser analisada pelo updatedb.

PRUNEPATHS=

Lista de nomes de caminhos que devem ser ignorados pelo updatedb. Os nomes de caminhos devem ser separados por espaços e especificados da mesma maneira como seriam mostrados pelo updatedb (por exemplo, /var/spool /media)

PRUNE_BIND_MOUNTS=

Esta é uma simples variável de yes ou no. Se definida como yes, as bind mounts (montagens de ligação: diretórios montados em outros locais com o comando mount --bind) serão ignoradas.

Encontrando binários, páginas de manual e código-fonte

O which é um comando muito útil que mostra o caminho completo para um executável. Por exemplo, se você quiser localizar o executável para bash, pode usar:

$ which bash
/usr/bin/bash

Se a opção -a for adicionada, o comando mostrará todos os nomes de caminho que correspondem ao executável. Observe a diferença:

$ which mkfs.ext3
/usr/sbin/mkfs.ext3

$ which -a mkfs.ext3
/usr/sbin/mkfs.ext3
/sbin/mkfs.ext3
Tip

Para descobrir quais diretórios estão no PATH, use o comando echo $PATH. Ele exibe (echo) o conteúdo da variável PATH ($PATH) no terminal.

type é um comando semelhante que mostra informações sobre um binário, incluindo sua localização e tipo. Basta usar type seguido do nome do comando:

$ type locate
locate is /usr/bin/locate

O parâmetro -a funciona da mesma maneira que em which, mostrando todos os nomes de caminho que correspondem ao executável. Assim:

$ type -a locate
locate is /usr/bin/locate
locate is /bin/locate

E o parâmetro -t mostra o tipo de arquivo do comando que pode ser alias, keyword, function, builtin ou file. Por exemplo:

$ type -t locate
file

$ type -t ll
alias

$ type -t type
type is a built-in shell command

O comando whereis é mais versátil e, além dos binários, também pode ser usado para mostrar a localização das páginas do manual ou mesmo o código-fonte de um programa (se disponível em seu sistema). Basta digitar whereis seguido do nome binário:

$ whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

Os resultados acima incluem binários (/usr/bin/locate) e páginas de manual comprimidas (/usr/share/man/man1/locate.1.gz).

Podemos filtrar rapidamente os resultados usando opções de linha de comando como -b, para limitá-los apenas aos binários, -m, para limitá-los apenas a páginas de manual, ou -s, para limitá-los apenas ao código-fonte. Repetindo o exemplo acima, os resultados seriam:

$ whereis -b locate
locate: /usr/bin/locate

$ whereis -m locate
locate: /usr/share/man/man1/locate.1.gz

Exercícios Guiados

  1. Imagine que um programa precisa criar um arquivo temporário de uso único, que não será novamente necessário após o encerramento do programa. Qual seria o diretório correto para criar esse arquivo?

  2. Qual é o diretório temporário que deve ser limpo durante o processo de inicialização?

  3. Usando find, pesquise apenas no diretório atual por arquivos que são graváveis pelo usuário, foram modificados nos últimos 10 dias e são maiores que 4 GB.

  4. Usando locate, encontre todos os arquivos contendo os padrões report e updated, update ou updating em seus nomes.

  5. Como descobrir onde a página de manual para ifconfig está armazenada?

  6. Qual variável precisa ser adicionada a /etc/updatedb.conf para que updatedb ignore sistemas de arquivos ntfs?

  7. Um administrador de sistema deseja montar um disco interno (/dev/sdc1). De acordo com o FHS, em qual diretório este disco deve ser montado?

Exercícios Exploratórios

  1. Quando locate é usado, os resultados são puxados de um banco de dados gerado por updatedb. No entanto, este banco de dados pode estar desatualizado, fazendo com que o locate mostre arquivos que não existem mais. Como fazer com que locate mostre apenas arquivos existentes em sua saída?

  2. Encontre qualquer arquivo no diretório ou subdiretórios atuais até 2 níveis abaixo, excluindo sistemas de arquivos montados, que contenham o padrão Status ou statute em seus nomes.

  3. Limitando a pesquisa aos sistemas de arquivos ext4, encontre quaisquer arquivos sob /mnt que tenham no mínimo permissões de execução para o grupo, sejam legíveis para o usuário atual e tenham tido qualquer atributo alterado nas últimas 2 horas.

  4. Encontre arquivos vazios que foram criados há mais de 30 dias e estão pelo menos dois níveis abaixo do diretório atual.

  5. Considere que os usuários carol e john fazem parte do grupo mkt. Encontre no diretório pessoal de john quaisquer arquivos que também possam ser lidos por carol.

Resumo

Nesta lição, você aprendeu sobre a organização básica do sistema de arquivos em uma máquina Linux, de acordo com o FHS, e como encontrar binários e arquivos, seja por nome ou por atributos. Os seguintes comandos foram discutidos nesta lição:

find

Um comando versátil usado para encontrar arquivos e pastas segundo uma variedade de critérios de pesquisa.

locate

Um utilitário que usa um banco de dados local contendo a localização dos arquivos armazenados localmente.

updatedb

Atualiza o banco de dados local usado pelo comando locate.

which

Exibe o caminho completo até um executável.

whereis

Exibe a localização das páginas de manual, binários e código-fonte no sistema.

type

Exibe a localização de um binário e de que tipo de aplicativo se trata (um programa instalado, um programa interno do Bash e assim por diante).

Respostas aos Exercícios Guiados

  1. Imagine que um programa precisa criar um arquivo temporário de uso único, que não será novamente necessário após o encerramento do programa. Qual seria o diretório correto para criar esse arquivo?

    Como não precisamos mais do arquivo depois que o programa for encerrado, o diretório correto é /tmp.

  2. Qual é o diretório temporário que deve ser limpo durante o processo de inicialização?

    O diretório é /run ou, em certos sistemas, /var/run.

  3. Usando o find, pesquise apenas no diretório atual por arquivos que são graváveis pelo usuário, foram modificados nos últimos 10 dias e são maiores que 4 GB.

    Para isso, precisamos dos parâmetros -writable, -mtime e -size:

    find . -writable -mtime -10 -size 4G
  4. Usando locate, encontre todos os arquivos contendo os padrões report e updated, update ou updating em seus nomes.

    Como locate precisa encontrar todos os padrões correspondentes, use a opção -A:

    locate -A "report" "updat"
  5. Como descobrir onde a página de manual para ifconfig está armazenada?

    Use o parâmetro -m para o whereis:

    whereis -m ifconfig
  6. Qual variável precisa ser adicionada a /etc/updatedb.conf para que updatedb ignore sistemas de arquivos ntfs?

    A variável é PRUNEFS= seguida pelo tipo do sistema de arquivos: PRUNEFS=ntfs

  7. Um administrador de sistema deseja montar um disco interno (/dev/sdc1). De acordo com o FHS, em qual diretório este disco deve ser montado?

    Na prática, o disco pode ser montado em qualquer lugar. Porém, o FHS recomenda que montagens temporárias sejam feitas em /mnt

Respostas aos Exercícios Exploratórios

  1. Quando locate é usado, os resultados são puxados de um banco de dados gerado por updatedb. No entanto, este banco de dados pode estar desatualizado, fazendo com que o locate mostre arquivos que não existem mais. Como fazer com que locate mostre apenas arquivos existentes em sua saída?

    Adicione o parâmetro -e a locate, como em locate -e PATTERN.

  2. Encontre qualquer arquivo no diretório ou subdiretórios atuais até 2 níveis abaixo, excluindo sistemas de arquivos montados, que contenham o padrão Status ou statute em seus nomes.

    Lembre-se de que para -maxdepth também devemos levar em conta o diretório atual, de forma que queremos três níveis (o atual, mais 2 níveis para baixo):

    find . -maxdepth 3  -mount -iname "*statu*"
  3. Limitando a pesquisa aos sistemas de arquivos ext4, encontre quaisquer arquivos sob /mnt que tenham no mínimo permissões de execução para o grupo, sejam legíveis para o usuário atual e tenham tido qualquer atributo alterado nas últimas 2 horas.

    Use o parâmetro -fstype de mount para limitar a pesquisa a tipos específicos de sistemas de arquivos. Um arquivo legível pelo usuário atual teria ao menos 4 no primeiro dígito de permissões, e um executável pelo grupo teria ao menos 1 no segundo dígito. Como não estamos preocupados com as permissões de outros, podemos usar 0 no terceiro dígito. Use -cmin N para filtrar alterações recentes de atributos, lembrando que N é especificado em minutos. Assim:

    find /mnt -fstype ext4 -perm -410 -cmin -120
  4. Encontre arquivos vazios que foram criados há mais de 30 dias e estão pelo menos dois níveis abaixo do diretório atual.

    O parâmetro -mindepth N pode ser usado para limitar a pesquisa a pelo menos N níveis abaixo, mas é necessário incluir o diretório atual na contagem. Use -empty para procurar por arquivos vazios e -mtime N para ver a data e hora de modificação. Assim:

    find . -empty -mtime +30 -mindepth 3
  5. Considere que os usuários carol e john fazem parte do grupo mkt. Encontre no diretório pessoal de john quaisquer arquivos que também possam ser lidos por carol.

    Considerando que os dois são membros do mesmo grupo, precisamos de pelo menos um r (4) nas permissões de grupo e não estamos preocupados com os outros. Assim:

    find /home/john -perm -040

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.