Linux

Sistema Operacional

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:

1. Aplicação (Application)

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.

2. Shell

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.

3. Kernel

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.

Interação entre as camadas

  1. Aplicações fazem chamadas de sistema para o kernel através do shell (na CLI) ou diretamente (na GUI).

  2. O shell interpreta os comandos e faz solicitações ao kernel.

  3. 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.

Diretórios

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.

/boot

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).

/bin

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.

/lib

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.

Usos Comuns

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.

/proc

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.

Usos Comuns

  • 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.

Last updated