Portal IDEA

Linux Intermediário

 LINUX INTERMEDIÁRIO

 

Processos, Serviços e Pacotes

Gerenciamento de Processos 

 

O gerenciamento de processos é um aspecto central do funcionamento e administração de sistemas Linux. Cada programa em execução, seja ele iniciado pelo usuário ou pelo sistema, corresponde a um processo. O Linux oferece diversas ferramentas de linha de comando que permitem monitorar, priorizar, controlar e encerrar esses processos. Entre os comandos mais relevantes estão ps, top, htop, kill, nice, renice, bem como mecanismos de controle de jobs e execução em primeiro ou segundo plano (foreground/background). A compreensão dessas ferramentas é essencial para diagnosticar problemas, otimizar o desempenho e garantir a estabilidade do sistema.

1. Conceitos Fundamentais: PID, PPID, Foreground e Background

a) PID (Process ID)

Todo processo em Linux é identificado por um número único chamado Process ID (PID). Esse número permite ao sistema rastrear, gerenciar e controlar cada processo em execução. Ao executar um comando ou programa, um novo PID é gerado.

b) PPID (Parent Process ID)

Cada processo é iniciado por outro, conhecido como processo pai. O PPID identifica esse processo original. Por exemplo, quando um terminal executa um script, o terminal é o pai e o script é o filho.

c) Foreground e Background

  • Foreground (primeiro plano): o processo ocupa a sessão atual do terminal e impede a execução de outros comandos até sua conclusão.
  • Background (segundo plano): permite a execução do processo em paralelo, liberando o terminal para outros comandos.

Para executar um processo em segundo plano:

comando &

Exemplo:

sleep 100 &

Para suspender um processo em foreground, usa-se Ctrl+Z. Para movê-lo ao background, utiliza-se o comando bg.

2. Comando ps

O comando ps (process status) exibe uma fotografia dos processos ativos no momento. Ele é útil para verificar o PID, o tempo de execução, o usuário e o comando responsável pelo processo.

Exemplo básico:

ps aux

Onde:

  • a mostra processos de todos os usuários.
  • u exibe o nome do usuário.
  • x lista processos que não estão ligados a um terminal.

Para filtrar por nome de processo:

ps aux | grep nome_do_programa

3. Comando top

O top oferece uma visualização dinâmica e em tempo real do uso da CPU, memória e processos. Ele atualiza automaticamente as informações e permite interações como o encerramento de processos.

Comandos dentro do top:

  • k: kill (encerra um processo).
  • r: renice (altera prioridade).
  • q: quit (sai do top).

Exemplo de execução:

top

4. Comando htop

O htop é uma alternativa ao top, com interface mais amigável e interativa. Permite navegação com setas, busca por processos e seleção múltipla.

Para instalar:

sudo apt install htop   # em Debian/Ubuntu

sudo dnf install htop   # em Fedora/RHEL

Execução:

htop

O htop mostra barras visuais de uso da CPU, RAM e swap, facilitando o diagnóstico.

5. Comando kill

O kill envia sinais a processos com base em seus PIDs. O sinal padrão é TERM (terminar), mas é possível especificar outros, como KILL (encerramento forçado).

Sintaxe:

kill [opção] PID

Exemplo:

kill 1234

Para encerrar de forma imediata:

kill -9 1234

É possível usar o comando killall para encerrar todos os processos com o mesmo nome:

killall firefox

6. Comandos nice e renice: Prioridades de Processos

O sistema Linux utiliza uma prioridade chamada nice value, que varia de -20 (maior prioridade) a 19 (menor prioridade). Processos com valores mais baixos têm preferência no uso da CPU.

a) nice

Define a prioridade no momento da criação do processo.

Exemplo:

nice -n 10 comando

b) renice

Modifica a prioridade de um processo em execução.

Exemplo:

renice -n 5 -p 1234

Esses comandos são úteis para evitar que tarefas menos importantes comprometam o desempenho de tarefas críticas.

7. Controle de Jobs: jobs, bg, fg, &

O shell do Linux permite o controle de múltiplos processos diretamente do terminal.

  • jobs: lista os processos iniciados no terminal atual.
  • &: executa um processo em background.
  • Ctrl+Z: suspende um processo em foreground.
  • bg: move o processo suspenso para o background.
  • fg: traz o processo de volta ao foreground.

Exemplo prático:

sleep 100

[Ctrl+Z]          # Suspende

bg                # Continua em background

jobs              # Verifica jobs ativos

fg                # Retorna ao foreground

Cada job recebe um número (job ID), usado com %:

fg %1

Considerações Finais

O gerenciamento de processos no Linux não apenas permite o controle preciso sobre o que está sendo executado no sistema, como também é uma ferramenta fundamental para diagnóstico e otimização. Dominar comandos como ps, top, htop, kill, nice, renice e os mecanismos de controle de jobs fornece ao usuário o poder de manter um ambiente estável, eficiente e seguro. Em servidores ou sistemas críticos, a fluência nessas ferramentas é uma habilidade indispensável para qualquer

profissional da área.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • The Linux Documentation Project (TLDP). Disponível em: http://www.tldp.org/
  • GNU Core Utilities. Documentation. Disponível em: https://www.gnu.org/software/coreutils/manual/


Gerenciamento de Serviços com systemd no Linux

 

O systemd é o sistema de inicialização e gerenciamento de serviços adotado pela maioria das distribuições Linux modernas, como Ubuntu, Debian, Fedora, CentOS e Arch Linux. Sua principal ferramenta de controle é o comando systemctl, que permite ao administrador iniciar, parar, reiniciar, habilitar ou desabilitar serviços, além de verificar seu status e gerenciar o comportamento na inicialização do sistema. Complementando essas funcionalidades, o comando journalctl fornece acesso centralizado aos logs gerados pelo sistema e pelos serviços gerenciados pelo systemd.

1. Introdução ao systemd

O systemd foi introduzido para substituir os sistemas tradicionais de init (como SysVinit e Upstart), oferecendo inicialização paralela, gerenciamento de dependências entre serviços, monitoramento de processos e uma arquitetura modular. O systemd organiza os serviços em unidades (units), geralmente com extensão .service, que descrevem como os serviços devem ser executados, monitorados e reiniciados.

As unidades são geralmente armazenadas em:

  • /etc/systemd/system/ – personalizações do administrador.
  • /lib/systemd/system/ – arquivos de serviço instalados por pacotes.

2. Comando systemctl

O comando systemctl é o utilitário central para controlar o comportamento do systemd. Ele permite ações como iniciar, parar, recarregar e consultar serviços e outras unidades do sistema.

Sintaxe geral:

systemctl [opção] nome-do-serviço.service

Por exemplo:

systemctl start apache2.service

Se a extensão .service for omitida, ela será assumida automaticamente.

3. Verificação de Status de Serviços

O status de qualquer serviço pode ser verificado com:

systemctl status nome-do-serviço

Exemplo:

systemctl status ssh

O resultado incluirá:

  • O estado atual (ativo, inativo, falhou etc.).
  • PID do processo.
  • Logs recentes relacionados ao serviço.

Esse comando é útil para diagnóstico e acompanhamento do funcionamento de serviços críticos.

4. Iniciar, Parar e Reiniciar

Serviços

Os comandos a seguir controlam a execução dos serviços:

  • Iniciar um serviço:

systemctl start nome-do-serviço

·        Parar um serviço:

systemctl stop nome-do-serviço

·        Reiniciar um serviço:

systemctl restart nome-do-serviço

·        Recarregar a configuração sem reiniciar:

systemctl reload nome-do-serviço

Esses comandos exigem privilégios administrativos, sendo geralmente utilizados com sudo.

5. Serviços na Inicialização: enable e disable

O systemd permite definir quais serviços devem ser ativados automaticamente na inicialização do sistema.

  • Habilitar serviço na inicialização:

systemctl enable nome-do-serviço

·        Desabilitar serviço:

systemctl disable nome-do-serviço

·        Verificar se está habilitado:

systemctl is-enabled nome-do-serviço

·        Listar todos os serviços habilitados:

systemctl list-unit-files --type=service

Habilitar um serviço cria um link simbólico para o arquivo de unidade em /etc/systemd/system, de modo que o serviço seja iniciado automaticamente em seu runlevel correspondente (geralmente o multi-user.target).

6. Visualização de Logs com journalctl

O journalctl é o visualizador de logs unificado do systemd, permitindo o acesso aos registros de mensagens do sistema e dos serviços.

Comandos básicos:

  • Exibir todos os logs:

journalctl

·        Ver logs de um serviço específico:

journalctl -u nome-do-serviço

·        Visualizar logs em tempo real:

journalctl -f

·        Filtrar por data:

journalctl --since "2025-06-01" --until "2025-06-03"

·        Limpar logs antigos:

journalctl --vacuum-time=7d

Os logs são armazenados em /var/log/journal e incluem não apenas mensagens de erro, mas também avisos, notificações e eventos do sistema.

7. Boas Práticas no Uso do systemd

  • Monitore serviços essenciais como sshd, networking, firewalld e cron regularmente com systemctl status.
  • Automatize reinicializações com Restart=always no arquivo .service, quando necessário.
  • Verifique logs com frequência, especialmente após atualizações ou falhas inesperadas.
  • Habilite apenas o necessário na inicialização para reduzir o tempo de boot e minimizar o consumo de recursos.
  • Crie serviços personalizados quando necessário para scripts ou aplicações específicas, usando arquivos .service.

Considerações Finais

O systemd, por meio do comando systemctl e do visualizador journalctl, representa um avanço significativo na administração de sistemas

Linux. Ele proporciona maior controle, previsibilidade e facilidade no gerenciamento de serviços e da inicialização. Com sua estrutura modular e abordagem centrada em unidades, permite que administradores mantenham sistemas mais organizados, seguros e eficientes. A adoção ampla do systemd torna seu domínio indispensável para qualquer profissional de infraestrutura ou desenvolvedor que trabalhe com Linux.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • The systemd Project. System and Service Manager. Disponível em: https://www.freedesktop.org/wiki/Software/systemd/
  • The Linux Documentation Project (TLDP). Disponível em: http://www.tldp.org/


Gerenciamento de Pacotes no Linux

 

O gerenciamento de pacotes é uma das tarefas mais fundamentais no uso e na administração de sistemas Linux. Ele permite instalar, atualizar, remover e consultar softwares de maneira controlada e eficiente. Cada distribuição Linux utiliza um sistema de pacotes específico: distribuições baseadas em Debian (como Ubuntu e Linux Mint) usam pacotes .deb e o gerenciador apt; já as distribuições baseadas em Red Hat (como CentOS, RHEL e Fedora) utilizam pacotes .rpm, gerenciados por ferramentas como yum ou dnf. Além dos gerenciadores de alto nível, também existem ferramentas de baixo nível como dpkg e rpm, que permitem a manipulação direta dos arquivos de pacotes.

1. Sistemas de Pacotes: .deb e .rpm

Os pacotes são arquivos compactados que contêm todos os arquivos necessários para a instalação de um software, além de scripts de configuração e metadados (como dependências, descrição, versão).

  • .deb: formato de pacote usado em sistemas baseados em Debian.
  • .rpm: formato de pacote adotado por sistemas Red Hat e seus derivados.

Esses pacotes são distribuídos por repositórios, que são servidores ou espelhos (mirrors) online onde os pacotes e atualizações estão disponíveis.

2. Gerenciador de Pacotes apt (Debian/Ubuntu)

O apt (Advanced Package Tool) é o utilitário de alto nível mais utilizado em sistemas Debian-like. Ele lida com instalação, atualização, remoção e pesquisa de pacotes, além de resolver automaticamente dependências.

a) Atualizar os repositórios e o sistema:

sudo apt update       # Atualiza a lista de pacotes

sudo apt upgrade      #

Atualiza todos os pacotes instalados

b) Instalar um pacote:

sudo apt install nome-do-pacote

c) Remover um pacote:

sudo apt remove nome-do-pacote

d) Remover com arquivos de configuração:

sudo apt purge nome-do-pacote

e) Limpar pacotes antigos e cache:

sudo apt autoremove

sudo apt clean

O apt interage com os repositórios definidos no arquivo /etc/apt/sources.list e em arquivos adicionais em /etc/apt/sources.list.d/.

3. Gerenciadores yum e dnf (CentOS/RHEL)

Nas distribuições baseadas em Red Hat, o gerenciador tradicional é o yum (Yellowdog Updater, Modified), que foi substituído pelo mais moderno dnf (Dandified YUM) em sistemas como Fedora e versões recentes do RHEL e CentOS.

a) Atualizar repositórios e pacotes:

sudo dnf check-update

sudo dnf upgrade

b) Instalar pacotes:

sudo dnf install nome-do-pacote

c) Remover pacotes:

sudo dnf remove nome-do-pacote

d) Limpar cache:

sudo dnf clean all

O dnf possui recursos aprimorados, como melhor gerenciamento de dependências, transações reversíveis e desempenho otimizado.

4. Ferramentas de Baixo Nível: dpkg e rpm

a) dpkg (Debian)

O dpkg é o gerenciador de pacotes de baixo nível em sistemas Debian. Ele não lida com dependências automaticamente, sendo indicado para instalação manual de pacotes .deb.

Comandos principais:

  • Instalar:

sudo dpkg -i pacote.deb

·        Corrigir dependências não satisfeitas:

sudo apt install -f

·        Listar pacotes instalados:

dpkg -l

·        Remover:

sudo dpkg -r nome-do-pacote

b) rpm (Red Hat)

O rpm (Red Hat Package Manager) é a ferramenta correspondente nas distribuições .rpm.

Comandos principais:

  • Instalar:

sudo rpm -ivh pacote.rpm

·        Atualizar:

sudo rpm -Uvh pacote.rpm

·        Remover:

sudo rpm -e nome-do-pacote

·        Verificar se o pacote está instalado:

rpm -q nome-do-pacote

Assim como o dpkg, o rpm não resolve dependências automaticamente; por isso, recomenda-se utilizar o dnf ou yum para instalações comuns.

5. Repositórios

Os repositórios são fontes online (ou locais) que armazenam coleções organizadas de pacotes. Eles garantem que os usuários possam instalar softwares de forma segura, confiável e compatível com o sistema.

Nos sistemas baseados em Debian, os repositórios são definidos nos arquivos mencionados anteriormente. Já nos sistemas Red Hat, os repositórios são configurados em arquivos .repo dentro de /etc/yum.repos.d/.

Também é possível adicionar repositórios externos (como PPA no Ubuntu) ou criar repositórios

locais para ambientes corporativos, garantindo maior controle sobre versões e segurança.

Considerações Finais

O gerenciamento de pacotes é uma das habilidades mais importantes para administradores e usuários intermediários de Linux. Ele garante que o sistema esteja atualizado, seguro e com os softwares necessários para sua operação. A escolha do gerenciador adequado — apt, dnf, yum, dpkg ou rpm — depende da distribuição em uso e do contexto da operação. A familiaridade com esses comandos permite resolver rapidamente problemas de dependência, instalar softwares fora dos repositórios oficiais e automatizar tarefas de administração.

Referências Bibliográficas

  • SHOTTS, William. The Linux Command Line: A Complete Introduction. No Starch Press, 2019.
  • BLUM, Richard. Linux Command Line and Shell Scripting Bible. 4th ed. Wiley, 2021.
  • NEGUS, Christopher. Linux Bible. 10th ed. Wiley, 2020.
  • Debian Project. APT User's Guide. Disponível em: https://wiki.debian.org/Apt
  • Fedora Project. DNF Documentation. Disponível em: https://dnf.readthedocs.io/
  • Red Hat. RPM Documentation. Disponível em: https://rpm.org/documentation.html

Quer acesso gratuito a mais materiais como este?

Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!

Matricule-se Agora