104.7 Padrão e Comandos para Localização de Arquiovos
As distribuições Linux vêm em todas as formas e tamanhos, mas uma coisa que quase todas compartilham é que seguem o Filesystem Hierarchy Standard (FHS), que define um "layout padrão" para o sistema de arquivos (Modo como os arquivos e diretórios são organizado, criando uma função para cada diretório), tornando a interoperação e administração do sistema muito mais fácil.
O padrão de hierarquia do sistema de arquivos
O Filesystem Hierarchy Standard (FHS) é um esforço da Linux Foundation para padronizar a estrutura e o conteúdo do diretório em sistemas Linux. A conformidade com o padrão não é obrigatória, mas a maioria das distribuições o segue.
Segue a estrutura básica dos diretórios:
Diretório | Descrição |
---|---|
/ | Este é o diretório raiz, o diretório superior na hierarquia. Todos os outros diretórios estão localizados dentro dele. Um sistema de arquivos é freqüentemente comparado a uma "árvore", então este seria o "tronco" ao qual todos os ramos estão conectados. |
/bin | Binários essenciais para usar o sistema, disponíveis para todos os usuários. Ex: cp, ls, rm, mv... |
/boot | Arquivos necessários para o processo de inicialização, incluindo o disco RAM inicial (initrd) e o próprio kernel do Linux. |
/dev | Arquivos do dispositivo. Eles 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. Ex: sda, tty, sr0, pts... |
/etc | Usado para configuração do Sistema. Ex: passwd, profile, bash.bashrc... |
/home | Cada usuário no sistema possui um diretório "inicial" para armazenar arquivos pessoais e preferências, e a maioria deles está localizada em /home. Normalmente, o diretório inicial é o mesmo que o nome de usuário, então o usuário Jão teria seu diretório em /home/joao. As exceções são o superusuário (root), que possui um diretório separado (/root) e alguns usuários do sistema. |
/lib | Bibliotecas compartilhadas necessárias para inicializar o sistema operacional e executar os binários em /bin e /sbin. Também temos os módulos. |
/media | Mídias removíveis montáveis pelo usuário, como unidades flash, leitores de CD e DVD-ROM, disquetes, cartões de memória e discos externos são montados aqui. |
/mnt | Ponto de montagem para sistemas de arquivos montados temporariamente. |
/opt | Instalação de softwares por terceiros. |
/root | Diretório inicial do superusuário (root). |
/run | Dados variáveis de tempo de execução. |
/sbin | Binários essenciais para usar o sistema, disponíveis apenas para SysAdmins. Ex: fdisk, mkfs, fsck, swapon... |
/srv | Dados servidos pelo sistema. Por exemplo, as páginas servidas por um servidor web podem ser armazenadas em /srv/www. |
/tmp | Arquivos temporários. |
/usr | Dados do usuário somente leitura, incluindo dados necessários para alguns utilitários e programas não críticos secundários. |
/proc e /sys | Sistema de arquivos virtual, contendo dados relacionados aos processos em execução e hardwares. Ex: cpu, memória, swap... |
/var | Dados variáveis gravados durante a operação do sistema, incluindo fila de impressão, dados de registro, caixas de correio, arquivos temporários, cache do navegador, etc. |
/usr/local | Programas instalados pelo SysAdmin, pode ser no /opt ou aqui. |
/usr/X11R6 | Muito pouco usado. Arquivos referente a interface gráfica. |
/usr/bin | Binários não essenciais para todos os usuários. Ex: head, du, dpkg, nice... |
/usr/sbin | Binários não essenciais para SysAdmin. Ex: edquota, xfs_info, useradd... |
/usr/lib | Biblioteca de programas. |
/usr/share/man | Fonte de Manuais do Linux. |
Localizando arquivos
Para pesquisar arquivos em um sistema Linux, você pode usar o comando find. Esta é uma ferramenta muito poderosa, cheia de parâmetros que podem se adequar ao seu comportamento e modificar a saída exatamente de acordo com as suas necessidades.
Para relembra o uso do find, consulta a seção onde falamos sobre ele, aqui
LOCATE
O comando locale
usa um banco de dados interno para fazer as buscas, o que ele faz é procurar pela "string" que você passa para ele dentro de seu banco de dados. Antes de procurarmos qualquer coisa usando ele, precisamos atualizar o banco de dados, para isso usamos o comando updatedb
(Seu arquivo de configuração fica em /etc/updatedb.conf
).
# Atualize o banco de dados:
$ sudo updatedb
# Pesquise pela string crontab:
$ sudo locate crontab
/usr/bin/crontab
/usr/share/bash-completion/completions/crontab
/usr/share/licenses/crontabs
/usr/share/licenses/crontabs/COPYING
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man4/crontabs.4.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim80/syntax/crontab.vim
WHEREIS
Busca por binários, libs, fontes, manuais entre outros, vai buscar a string no começo do nome do arquivo.
$ whereis nano
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
# Traaz informações do binário, manual etc.
$ whereis cp
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
WHICH
Faz buscas apenas no PATH, normalmente só traz o binário.
$ which nano
/usr/bin/nano
$ which cp
/usr/bin/cp
TYPE
Não é bem para localizar, mas ele informa se o binário é interno do bash ou não.
Veja aqui