Linux
Last updated
Last updated
Antes de falar sobre containers faz-se necessário falar de Linux
No Linux, o sistema operacional é estruturado em várias camadas que interagem entre si para proporcionar um ambiente funcional e eficiente. As principais camadas são:
Esta é a camada onde os usuários interagem diretamente. Inclui todos os programas e aplicativos que o usuário pode executar, como navegadores web, editores de texto, players de mídia, entre outros. Estes programas fazem chamadas ao sistema operacional para acessar recursos de hardware e serviços fornecidos pelas camadas inferiores.
O shell é uma interface de usuário que permite a interação com o sistema operacional. Ele pode ser de dois tipos: shell gráfico (GUI) ou shell de linha de comando (CLI). No contexto do Linux, o termo "shell" geralmente se refere à CLI, como o Bash, Zsh ou outros intérpretes de comandos. O shell interpreta os comandos digitados pelo usuário e os traduz em ações que o sistema pode executar, como manipulação de arquivos, execução de programas e scripts.
O kernel é o núcleo do sistema operacional. Ele atua como uma ponte entre o hardware do computador e os aplicativos. Suas funções principais incluem:
Gerenciamento de processos: Controle de execução dos processos, garantindo que cada um receba tempo de CPU e recursos adequados.
Gerenciamento de memória: Alocação e liberação de memória para os processos, bem como a gestão da memória virtual.
Gerenciamento de dispositivos: Interação com os dispositivos de hardware, utilizando drivers para permitir a comunicação entre o sistema e o hardware.
Gerenciamento de sistema de arquivos: Controle de como os dados são armazenados, organizados e acessados no sistema de arquivos.
Aplicações fazem chamadas de sistema para o kernel através do shell (na CLI) ou diretamente (na GUI).
O shell interpreta os comandos e faz solicitações ao kernel.
O kernel interage diretamente com o hardware para executar as solicitações e retorna os resultados ao shell, que por sua vez os apresenta às aplicações.
Esta estrutura em camadas proporciona modularidade, segurança e eficiência, permitindo que o Linux seja um sistema operacional robusto e adaptável para diferentes ambientes e usos.
Visão geral dos principais diretórios do Linux e seus usos comuns, ajudando a entender melhor a estrutura e funcionalidade do sistema operacional.
O diretório raiz (/
) é o ponto inicial do sistema de arquivos no Linux. Todos os outros diretórios e arquivos estão contidos dentro dele. Ele contém os subdiretórios essenciais necessários para o funcionamento do sistema.
O diretório /boot
contém todos os arquivos necessários para iniciar o sistema, como o kernel do Linux e arquivos de inicialização. Exemplo de arquivos comuns encontrados aqui são:
vmlinuz
: a imagem compactada do kernel do Linux.
initrd.img
: uma imagem do disco RAM inicial usada durante o processo de inicialização.
grub
: o diretório que contém os arquivos de configuração do GRUB (Grand Unified Bootloader).
O diretório /bin
contém binários essenciais executáveis para o sistema, que são necessários no modo de usuário único e para todos os usuários. Exemplos de comandos encontrados aqui incluem:
ls
: lista os arquivos e diretórios.
cp
: copia arquivos e diretórios.
mv
: move ou renomeia arquivos e diretórios.
bash
: o interpretador de comandos Bourne Again Shell.
O diretório /lib
contém bibliotecas compartilhadas essenciais usadas pelos binários em /bin
e /sbin
. Essas bibliotecas são necessárias para que os executáveis possam ser carregados e executados corretamente.
Comando ldd
O comando ldd
é usado para exibir as dependências de bibliotecas compartilhadas de um executável.
ldd /bin/bash
Este comando mostra as bibliotecas compartilhadas necessárias para o Bash. Exemplo de saída:
ldd /bin/cat
Este comando mostra as bibliotecas compartilhadas necessárias para o comando cat
. Exemplo de saída:
Outros usos comuns do comando ldd
incluem verificar as dependências de outros binários, como ldd /bin/ls
ou ldd /usr/bin/python3
.
O diretório /proc
é um sistema de arquivos virtual que fornece informações sobre o sistema e processos em execução. Ele não contém arquivos reais, mas informações geradas pelo kernel.
ps aux
Exibe uma lista detalhada de todos os processos em execução no sistema
ps
Exibe uma lista de processos em execução. Sem opções, mostra apenas os processos do terminal atual.
cat /proc/version
Mostra a versão do kernel do Linux.
cat /proc/cpuinfo
Exibe informações detalhadas sobre a CPU
Exemplo com o processo node
Neste exemplo, o processo node
foi executado em segundo plano, e seu PID (Process ID) é 5932
. Com isso, os comandos seguintes fornecem detalhes sobre este processo:
cat /proc/5932/status
: Exibe o status do processo.
cat /proc/5932/cmdline
: Mostra a linha de comando completa com que o processo foi iniciado.
cat /proc/5932/environ
: Mostra as variáveis de ambiente do processo.