Processos, pacotes e serviços no Linux: systemd e logs

Aprenda a cuidar do software em execução em um sistema Linux pela linha de comando. Monitore processos com ps, top e free, interrompa-os e altere suas prioridades com sinais e nice, e inspecione o hardware com ferramentas como lscpu, lsblk e lspci. Instale, atualize e remova software com apt e dnf, gerencie serviços com systemctl, leia logs com journalctl, /var/log e dmesg para diagnosticar falhas de um serviço e faça backup de arquivos com tar, gzip, xz e zip.

BásicoAula 6 de 7 do curso Curso de Fundamentos de Linux

O que você vai aprender

  1. Identifique os programas em execução em um sistema Linux, acompanhe o uso de CPU e memória e interrompa, pause ou altere suas prioridades com segurança.
    • Listar processos e interpretar a saída de ps
      Explique o que é um processo, identifique-o pelo seu identificador de processo e use ps, pgrep e /proc para encontrar processos e consultar seu estado.
    • Monitorar CPU, memória e carga com top, free e uptime
      Interprete a visualização de processos em tempo real no top, avalie a memória com free e determine pela carga média se um sistema está sobrecarregado.
    • Interromper processos com sinais
      Envie sinais com kill, pkill e killall, escolha entre uma solicitação de encerramento e um encerramento forçado e verifique o resultado.
    • Executar tarefas em segundo plano e definir prioridades
      Mova comandos entre o primeiro e o segundo plano, mantenha-os em execução após encerrar a sessão e altere sua prioridade de CPU com nice e renice.
  2. Descubra quais processador, memória, discos e dispositivos uma máquina Linux possui e quais kernel e drivers ela usa, sem abrir o gabinete.
    • Identificar o processador, a memória e o sistema
      Use uname, lscpu, nproc, /proc e dmidecode para informar a arquitetura, as CPUs, a memória e o kernel de uma máquina.
    • Listar discos, dispositivos PCI e USB e seus drivers
      Nomeie corretamente os dispositivos de armazenamento, liste os dispositivos conectados a uma máquina com lsblk, lspci e lsusb e encontre os drivers e as mensagens do kernel associados a eles.
  3. Use os gerenciadores de pacotes das famílias Debian e Red Hat para instalar, atualizar, remover e inspecionar software com segurança a partir de repositórios confiáveis.
    • Compreender pacotes, repositórios e dependências
      Explique o que são pacote, repositório e dependência, como as ferramentas de pacotes de alto e baixo nível dividem o trabalho e quais ferramentas cada família de distribuições usa.
    • Instalar, atualizar e remover software com apt e dnf
      Atualize as informações de pacotes, instale e atualize software e remova-o completamente com apt em sistemas da família Debian e dnf em sistemas da família Red Hat.
    • Buscar pacotes e inspecionar o software instalado
      Encontre o pacote necessário, verifique o que está instalado e em qual versão, veja quais arquivos um pacote instalou e a qual pacote um arquivo pertence, e consulte o histórico de pacotes.
  4. Verifique, inicie, pare, habilite e personalize serviços em segundo plano com systemctl e compreenda como o systemd decide o que executar na inicialização.
    • Compreender o systemd, as unidades e o estado dos serviços
      Explique o que são um serviço e uma unidade do systemd, interprete a saída de systemctl status e distinga um serviço em execução de um serviço habilitado.
    • Iniciar, parar, habilitar e desabilitar serviços
      Controle serviços com systemctl no momento e na inicialização, aplique alterações de configuração com segurança e escolha o alvo padrão de inicialização.
    • Ler e personalizar arquivos de unidade
      Encontre e leia o arquivo de unidade de um serviço, altere suas configurações com segurança usando arquivos complementares e escreva um serviço simples.
  5. Encontre as mensagens que explicam o que um sistema e seus serviços fizeram, usando o diário de registros do systemd, arquivos de log em /var/log e mensagens do kernel, e use-as para corrigir falhas de um serviço.
    • Consultar o diário de registros do systemd com journalctl
      Leia o diário de registros do systemd com journalctl, filtrando por serviço, inicialização, prioridade e horário, e saiba onde ele é armazenado.
    • Ler arquivos de log em /var/log e mensagens do kernel
      Encontre e leia arquivos de log em texto em /var/log, incluindo arquivos antigos rotacionados, e use dmesg para ler as mensagens do kernel sobre hardware e drivers.
    • Diagnosticar e corrigir falhas de um serviço passo a passo
      Combine systemctl, journalctl e as verificações do próprio programa em uma rotina reproduzível que identifica a causa da falha de um serviço e confirma a correção.
  6. Agrupe arquivos e diretórios em arquivos de armazenamento com tar e zip, compacte e descompacte-os com gzip, bzip2 e xz e escolha o formato adequado para backups e compartilhamento.
    • Criar, listar e extrair arquivos tar
      Use tar para criar arquivos de armazenamento compactados, verificar seu conteúdo e extraí-los no local correto sem sobrescrever arquivos acidentalmente.
    • Compactar arquivos com gzip, bzip2, xz e zip
      Compacte e descompacte arquivos individuais, leia logs compactados sem descompactá-los, use zip para compartilhar e escolha um formato pela velocidade, tamanho e finalidade.

Guia de estudo de Processos, pacotes e serviços no Linux

6 capítulos

1

Monitorar e controlar processos em execução

Um comando lento, um servidor ocupado e um programa que não fecha começam com a mesma pergunta: o que está em execução? As ferramentas de processos permitem relacionar o nome de um programa ao seu usuário, identificador de processo e uso de recursos. Você interpretará uma visão instantânea, acompanhará as mudanças ao longo do tempo e escolherá como interromper ou pausar uma tarefa. O controle de tarefas do shell e as prioridades de CPU dão mais controle sobre tarefas longas sem perder o prompt do terminal.

1.1 Listar processos e interpretar a saída de ps

Um programa como /usr/bin/sleep é um arquivo no disco. Um processo é uma instância desse programa em execução, com memória e recursos próprios. Três comandos que executam o mesmo programa criam três processos. Cada processo ativo tem um PID, um identificador de processo; o Linux pode reutilizar esse número após seu término.

Encontre o processo e seu processo pai

Um processo normalmente é iniciado por outro processo, seu processo pai. A coluna PPID fornece o PID desse processo pai. Os comandos que você inicia em um shell são filhos dele. O PID 1 é o primeiro processo iniciado pelo kernel; em um sistema com systemd, ele é o systemd. pstree -p desenha essas relações entre processos quando está instalado.

ps apresenta uma visão instantânea. Sua seleção padrão são os processos com seu identificador efetivo de usuário no terminal atual. Para uma visão de todo o sistema, escolha as colunas necessárias:

ComandoColunas úteis
ps -efUID, PID, PPID, STIME, TIME, CMD
ps auxUSER, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND

A forma ps aux, no estilo BSD, não tem hífen. O campo USER identifica a conta cujas permissões o processo usa. Um processo root pode acessar recursos que um processo de usuário comum não pode.

Interprete uma linha

Considere este exemplo de ps aux:

www-data 2417 0.3 1.2 214560 48212 ? S 09:14 0:02 nginx: worker process

O proprietário é www-data, o PID é 2417 e o uso médio de CPU desde o início é de 0,3%. O processo ocupa atualmente 1,2% da RAM. RSS é a memória residente: 48.212 KiB, cerca de 47,1 MiB. VSZ, 214.560 KiB, também inclui espaço de endereçamento virtual que não está residente na RAM. Um VSZ grande, por si só, não é evidência de falta de memória.

O ? significa que não há terminal de controle. O estado S significa que o processo está em espera, geralmente aguardando trabalho. START é 09:14; TIME é dois segundos de trabalho da CPU. TIME não é o tempo decorrido: um servidor pode funcionar por dias usando muito pouca CPU.

Reconheça os estados dos processos
EstadoSignificado
REm execução ou pronto para receber tempo de CPU
SEm espera por um evento
DEm espera ininterruptível, muitas vezes pelo armazenamento
TParado ou pausado
ZZumbi: terminou e aguarda a coleta pelo processo pai
IThread ociosa do kernel

STAT pode acrescentar indicadores: + para um grupo em primeiro plano no terminal, s para um líder de sessão, l para várias threads, N para prioridade de CPU reduzida e < para prioridade aumentada. A espera é normal. Um zumbi já terminou e não usa CPU; enviar outro sinal de encerramento a ele não permite coletar seu código de saída. Um número crescente de zumbis aponta para um programa pai que precisa de atenção.

Restrinja a busca

pgrep -a nginx mostra os PIDs e as linhas de comando correspondentes. Padrões podem corresponder a vários nomes: pgrep ssh pode encontrar tanto sshd quanto ssh-agent. pgrep -u alice seleciona pelo proprietário; pidof nginx busca um nome de programa. Um encadeamento de ps com grep também pode mostrar o próprio processo grep.

Para os cinco processos que mais usam memória, execute:

ps -eo pid,ppid,user,%mem,cmd --sort=-%mem | head -n 6

Há seis linhas porque a primeira é um cabeçalho. ps -p 2417 verifica um PID. /proc/2417/status apresenta detalhes de nome, estado, processo pai e memória. /proc é uma visão virtual fornecida pelo kernel, não relatórios de processos armazenados em disco; o diretório do PID desaparece quando o processo termina.

Principais conclusões

  • Um processo é uma instância em execução; seu PID o identifica enquanto está ativo.
  • ps -ef mostra processos pais; ps aux acrescenta colunas de CPU e memória.
  • TIME mede o trabalho da CPU, enquanto START registra quando o processo começou.
  • RSS mede a RAM residente; VSZ inclui outras partes da memória virtual.
  • Processos em espera são normais; processos zumbis já terminaram.
  • pgrep restringe uma busca, e /proc/PID/status apresenta informações do kernel.

1.2 Monitorar CPU, memória e carga com top, free e uptime

Uma visão instantânea mostra o que existe; observações repetidas mostram o que está mudando. O top combina uma lista de processos em tempo real com totais de atividade de CPU, carga, memória e área de troca. Leia o resumo e os processos mais ocupados em conjunto antes de decidir qual recurso está sob pressão.

Trabalhe com o top

Execute top. Pressione P para ordenar por CPU, M para ordenar por memória, 1 para mostrar cada CPU, h para obter ajuda e q para sair. Seus comandos k e r enviam sinais e alteram valores nice. htop oferece outra visualização interativa, mas pode precisar de instalação.

As colunas de processos incluem PID, USER, PR, NI, VIRT, RES, SHR, estado, %CPU, %MEM, TIME+ e COMMAND. RES é a RAM residente, como RSS no ps; VIRT inclui espaço de endereçamento reservado. No modo padrão do top por CPU, um processo com várias threads pode chegar a 400% ao manter quatro CPUs ocupadas. Pressionar I altera a exibição para dividir o uso pelo número de CPUs.

Identifique o tipo de atividade da CPU

O resumo da CPU divide o tempo em categorias:

CampoO que informa
us, syTrabalho de programas de usuário e do kernel
niTrabalho de usuário com prioridade nice ajustada
idTempo ocioso
waTempo ocioso enquanto operações de entrada e saída estão pendentes
hi, siTrabalho de interrupções de hardware e software
stTempo que uma máquina virtual perdeu para seu sistema hospedeiro

Um alto uso de CPU por programas de usuário sugere processamento. Um wa alto com pouco trabalho de usuário direciona a atenção para esperas pelo armazenamento. Em uma máquina virtual, um st alto aponta para tempo de CPU retido pelo sistema hospedeiro. São causas diferentes de uma resposta lenta.

Compare a carga com a capacidade da CPU

uptime e top mostram cargas médias dos últimos 1, 5 e 15 minutos. O Linux conta tarefas prontas para executar e tarefas em espera ininterruptível, incluindo esperas pelo armazenamento. A carga não é uma porcentagem de CPU. nproc informa as CPUs disponíveis para o processo atual, o que ajuda a interpretar a capacidade.

Para um trabalho limitado pela CPU e com pouca espera pelo armazenamento, suponha que nproc informe 4 e a carga seja 6.00, 5.20, 3.10. A carga recente é de 1,5 tarefa por CPU, portanto havia trabalho em fila. O valor do período mais curto supera o do período mais longo, mostrando um aumento recente. Em 16 CPUs, uma carga de 6 seria bem mais leve. Uma carga alta com CPUs ociosas pode, por outro lado, vir de tarefas no estado D.

Avalie a memória com available

Execute free -h. Sua linha Mem inclui total, used, free, shared, buff/cache e available. O Linux preenche a RAM livre com caches úteis de disco e pode recuperar grande parte dela. Free contabiliza a RAM completamente sem uso; available estima quanto pode ser usado por novas tarefas sem recorrer à área de troca.

Por exemplo, uma máquina informa total 7.6Gi, used 3.1Gi, free 0.4Gi, buff/cache 4.6Gi e available 4.5Gi. O pequeno valor de free não indica falta de memória: cerca de 59% permanece disponível. Nas versões atuais do procps, used é o total menos available; free, used e cache não são partes distintas que possam ser simplesmente somadas.

Os sufixos Ki, Mi e Gi são unidades binárias. Um GiB equivale a 1.073.741.824 bytes; um GB equivale a 1.000.000.000 bytes. free -m usa MiB e free -g usa GiB inteiros, o que pode ocultar pequenas quantidades devido ao arredondamento.

A área de troca move parte do conteúdo da memória para um armazenamento em disco mais lento. Observe se a memória available está baixa enquanto o uso da área de troca aumenta. Se a memória se esgotar, o mecanismo de encerramento por falta de memória do kernel pode encerrar um processo. Verifique sudo journalctl -k para encontrar uma mensagem de OOM antes de presumir que um aplicativo falhou por conta própria.

Principais conclusões

  • Use o resumo do sistema e a lista de processos no top.
  • A carga no Linux conta tarefas prontas para executar e esperas ininterruptíveis; ela não é uma porcentagem.
  • Avalie a carga em relação às CPUs disponíveis e verifique esperas pelo armazenamento.
  • A coluna available é mais útil que free para avaliar a margem de RAM.
  • Memória available baixa e uso crescente da área de troca indicam pressão; eventos de OOM aparecem nos logs do kernel.

1.3 Interromper processos com sinais

Um sinal é uma notificação curta entregue a um processo. Ele pode solicitar o encerramento, pausar uma tarefa ou informar a um serviço que deve reler suas configurações. O comando kill envia sinais; seu nome não significa que todo sinal encerra o destinatário.

Escolha o sinal
SinalFinalidade
SIGTERMSolicitar um encerramento organizado; padrão de kill
SIGKILLForçar o encerramento sem a limpeza pelo aplicativo
SIGINTInterromper o programa em primeiro plano, geralmente com Ctrl+C
SIGTSTPSolicitar uma pausa, geralmente com Ctrl+Z
SIGSTOPForçar uma pausa
SIGCONTContinuar um processo parado
SIGHUPInformar o fechamento do terminal; alguns serviços o usam para recarregar a configuração
SIGQUITEncerrar, possivelmente com um despejo de memória; Ctrl+\ o envia

A maioria dos sinais pode ser tratada ou ignorada pelo programa. SIGKILL e SIGSTOP não podem ser capturados, bloqueados ou ignorados. kill -l lista nomes e números. Os números comuns em x86 e ARM incluem TERM 15, KILL 9, INT 2, HUP 1, QUIT 3, CONT 18, STOP 19 e TSTP 20. Os nomes evitam a numeração dependente da arquitetura.

Interrompa um processo com cuidado

Primeiro identifique o processo. ps -p 5120 -o pid,user,stat,cmd permite inspecionar o PID, o proprietário, o estado e o comando. Em seguida, solicite um encerramento organizado:

kill -TERM 5120

kill 5120, kill -15 5120 e kill -s TERM 5120 enviam a mesma solicitação. Um encerramento organizado permite que o aplicativo salve o trabalho, feche arquivos e remova arquivos de trava. Dê tempo para ele responder e execute ps -p 5120 novamente. Se apenas o cabeçalho aparecer, ele terminou.

Se o mesmo processo ativo ainda estiver travado após a espera, kill -KILL 5120 é a alternativa forçada. O aplicativo perde a chance de fazer a limpeza, portanto pode haver trabalho não salvo e arquivos temporários remanescentes. Confira novamente a identidade antes de recorrer ao sinal forçado: PIDs podem ser reutilizados após o término.

Confira os nomes antes de agir

pkill seleciona por um padrão de nome; killall seleciona um nome de programa. Ambos normalmente enviam SIGTERM. Confira as correspondências de um padrão amplo com pgrep -a fire antes de usar pkill fire: esse padrão pode selecionar mais processos do que você pretendia. pkill -u bob seleciona todos os processos de bob, não um único aplicativo.

killall -HUP rsyslogd envia HUP aos processos de registro correspondentes. O efeito de HUP depende do aplicativo: verifique se ele oferece suporte ao recarregamento antes de tratar o sinal como um comando de recarregamento. Para um serviço gerenciado pelo systemd, use sudo systemctl stop NAME; o gerenciador cuida do grupo de processos do serviço e não tratará a parada solicitada como uma falha a ser corrigida automaticamente.

Compreenda permissões e estados

Uma conta comum normalmente controla seus próprios processos. Uma tentativa de enviar um sinal ao processo de outra conta pode produzir “Operation not permitted”; sudo fornece privilégios de root quando necessário. Verifique o alvo antes de usar esses privilégios, pois parar o serviço errado afeta outros usuários.

Um processo no estado D pode permanecer visível após SIGKILL enquanto espera uma resposta do armazenamento. Repetir o sinal não corrige o armazenamento. Um processo zumbi no estado Z já terminou; seu processo pai deve coletar seu código de saída. Portanto, inspecionar o estado é importante quando o processo não desaparece.

Atalhos de teclado atuam sobre o grupo de processos em primeiro plano. Ctrl+C geralmente encerra a tarefa; Ctrl+Z a pausa e mantém sua memória e seus arquivos abertos. O fechamento do terminal normalmente leva ao envio de HUP e ao encerramento das tarefas associadas, por isso tarefas longas precisam de tratamento adequado.

Principais conclusões

  • SIGTERM solicita a limpeza; SIGKILL força o encerramento sem ela.
  • Confira as correspondências de padrões e verifique o PID antes de enviar um sinal.
  • SIGSTOP pausa e SIGCONT retoma; kill pode fazer mais do que encerrar.
  • Um zumbi não pode ser encerrado novamente, e esperas pelo armazenamento podem atrasar o encerramento.
  • Use systemctl stop para um serviço gerenciado.

1.4 Executar tarefas em segundo plano e definir prioridades

Uma tarefa em primeiro plano ocupa o terminal até terminar ou parar. Uma tarefa em segundo plano permite que o shell aceite outro comando enquanto ela é executada. O controle de tarefas altera onde o trabalho é executado; a prioridade de CPU altera como ele compete com outros trabalhos.

Mova tarefas entre o primeiro e o segundo plano

Um caractere E comercial inicia um comando em segundo plano:

sleep 300 &

O shell pode exibir [1] 6431. Aqui, 1 é seu número local de tarefa e 6431 é o PID válido em todo o sistema. jobs lista apenas as tarefas desse shell. fg %1 traz a tarefa 1 para primeiro plano. Se você pausar essa tarefa em primeiro plano com Ctrl+Z, bg %1 a retoma em segundo plano. Sem um número, fg e bg escolhem a tarefa marcada com +.

Experimente a sequência com sleep 300: execute-o em primeiro plano, pressione Ctrl+Z, execute bg, inspecione jobs, execute fg e pressione Ctrl+C. “Stopped” significa pausado, não concluído. Uma tarefa parada não usa CPU, mas ainda mantém memória e arquivos abertos. O Bash pode avisar “There are stopped jobs” quando você tenta sair.

Controle a saída e o encerramento da sessão

Um comando em segundo plano ainda pode escrever no terminal. Redirecione os dois fluxos de saída para uma tarefa longa:

./report.sh > report.log 2>&1 &

O primeiro redirecionamento envia a saída normal para o arquivo. 2>&1 envia a saída de erro para o mesmo destino. O & final devolve o prompt enquanto a tarefa é executada.

Executar em segundo plano, por si só, não protege uma tarefa do fechamento do terminal. Para iniciar um trabalho que ignora SIGHUP, use:

nohup ./long-task.sh > task.log 2>&1 &

Sem redirecionamento explícito de saída, nohup geralmente grava em nohup.out a saída destinada ao terminal. No Bash, disown %1 remove uma tarefa existente da tabela de tarefas do shell, de modo que o Bash não lhe repasse HUP. O programa ainda precisa de destinos utilizáveis para entrada e saída. Um programa destinado a funcionar permanentemente é mais bem gerenciado como serviço.

Abra espaço para tarefas interativas

O valor nice expressa a prioridade de escalonamento de CPU para processos comuns. Os valores vão de -20, a prioridade mais alta, a 19, a mais baixa; o valor inicial usual é 0. Valores maiores dão mais oportunidade a tarefas concorrentes. Um processo com nice 19 ainda pode usar totalmente uma CPU que, de outro modo, estaria ociosa.

nice -n 10 xz -9 big.log
renice -n 15 -p 6431

O primeiro comando inicia a compactação com um ajuste positivo de nice; a partir do valor usual 0, ele passa a 10. O segundo altera para 15 o valor nice do processo em execução. nice sem -n aplica um ajuste de 10. Um usuário comum geralmente pode aumentar o valor nice do próprio processo, reduzindo sua prioridade de CPU. Aumentar a prioridade por meio da redução do valor normalmente exige root, por exemplo sudo renice -n -5 -p 6431.

No top, NI mostra o valor nice; para processos comuns de tempo compartilhado, PR costuma ser 20 mais NI. Portanto, nice 10 aparece como PR 30. Em ps aux, N marca prioridade reduzida e <, prioridade aumentada. O valor nice afeta a disputa pela CPU, não a prioridade de acesso ao disco; ionice controla um recurso separado.

Principais conclusões

  • & inicia uma tarefa em segundo plano; jobs, fg e bg usam números de tarefa locais ao shell.
  • Ctrl+Z pausa uma tarefa; não a encerra.
  • Use redirecionamento de saída e nohup de forma consciente para uma tarefa longa no terminal.
  • Valores nice maiores reduzem a prioridade de CPU quando há disputa, não a velocidade máxima em uma CPU ociosa.
2

Inspecionar o hardware pela linha de comando

Informações de hardware ajudam você a escolher um pacote compatível, interpretar o uso de recursos e descrever uma falha com clareza. O Linux apresenta o kernel em execução, a organização da CPU, a memória utilizável e os dispositivos conectados por meio de ferramentas de linha de comando. Você distinguirá CPUs lógicas de núcleos físicos, valores decimais nos rótulos de armazenamento de tamanhos binários e um dispositivo detectado de outro com um driver funcional. As mesmas verificações ajudam quando o hardware é virtual.

2.1 Identificar o processador, a memória e o sistema

Antes de instalar software ou dimensionar uma carga de trabalho, descubra o que o sistema realmente oferece. A arquitetura determina quais pacotes de código de máquina podem ser executados. A disponibilidade de CPU ajuda a explicar a carga, e a RAM utilizável limita o trabalho que cabe na memória.

Separe o kernel da distribuição
ComandoInformação
uname -rVersão do kernel em execução, como 6.8.0-45-generic
uname -mArquitetura, como x86_64 ou aarch64
uname -aTodos os campos do uname
cat /etc/os-releaseNome e versão da distribuição
hostnamectlResumo do host, sistema operacional, kernel e arquitetura

Ubuntu 24.04 é uma versão de distribuição; um valor como 6.8.0-45-generic identifica o kernel em execução nela. Instalar um novo kernel não troca imediatamente o kernel em execução: isso acontece na reinicialização.

Os nomes das arquiteturas diferem entre famílias de pacotes. Pacotes Debian usam amd64 para a arquitetura informada pelo uname como x86_64, e arm64 para aarch64. Pacotes RPM geralmente usam x86_64 e aarch64 diretamente. Verifique se a compilação corresponde à máquina antes de instalá-la.

Conte núcleos e CPUs lógicas

lscpu informa arquitetura, modelo, soquetes, núcleos por soquete, threads por núcleo e CPUs lógicas. Para uma organização uniforme de CPU:

CPUs loˊgicas=soquetes×nuˊcleos por soquete×threads por nuˊcleo

Um soquete com seis núcleos e duas threads por núcleo fornece 12 CPUs lógicas. Ainda existem seis núcleos físicos. Duas threads de hardware compartilham recursos dentro de um núcleo, portanto 12 CPUs lógicas não garantem o dobro do desempenho de seis núcleos.

nproc informa as unidades de processamento disponíveis para o processo atual; a afinidade de CPU ou limites de recursos podem tornar esse número menor que o total da máquina. /proc/cpuinfo fornece detalhes da CPU diretamente. Em x86, grep -c ^processor /proc/cpuinfo conta as entradas de processador, e os indicadores vmx ou svm mostram suporte à virtualização por hardware. ARM apresenta campos diferentes.

Consulte a memória utilizável e a instalada

free -h fornece um resumo prático da RAM. /proc/meminfo fornece detalhes: MemTotal é a RAM utilizável e MemAvailable estima a capacidade que novas tarefas podem usar. Esse arquivo identifica seus valores como kB, mas eles são kibibytes, ou 1.024 bytes cada.

Por exemplo, MemTotal: 16303448 kB equivale a cerca de 15,5 GiB após duas divisões por 1.024. Uma máquina com módulos físicos de 16 GiB pode mostrar menos RAM utilizável porque as reservas do firmware e do kernel usam parte dela.

Para inspecionar os módulos e slots instalados, execute sudo dmidecode -t memory. sudo dmidecode -t system informa fabricante, modelo e dados de série fornecidos pelo firmware. Uma máquina virtual informa seu hardware virtual. sudo lshw -short, quando instalado, fornece um inventário compacto de hardware.

Verifique um requisito em testes separados

Suponha que um software precise de um sistema ARM de 64 bits, pelo menos quatro CPUs disponíveis e 8 GB de RAM. uname -m retornando aarch64 atende ao requisito de arquitetura. nproc retornando 4 atende ao requisito de CPU. Um total de 3.7Gi equivale a apenas cerca de 4,0 GB, portanto a memória é insuficiente. Atender a duas verificações não compensa falhar na terceira.

Principais conclusões

  • Use /etc/os-release para a distribuição e uname -r para o kernel em execução.
  • Os nomes de arquitetura dos pacotes diferem: amd64 no Debian corresponde a x86_64.
  • Soquetes, núcleos e threads de hardware determinam a quantidade de CPUs lógicas.
  • nproc informa as CPUs disponíveis para o processo atual.
  • A RAM utilizável pode ser menor que a memória instalada; /proc/meminfo usa kilobytes binários.

2.2 Listar discos, dispositivos PCI e USB e seus drivers

O Linux atribui nomes a dispositivos de hardware em /dev e publica sua representação dos dispositivos em /sys. Várias ferramentas de listagem respondem a perguntas diferentes: quais dispositivos de armazenamento existem, quais barramentos detectaram dispositivos e quais drivers estão lidando com eles.

Identifique discos e partições

Discos SATA, SAS e USB geralmente aparecem como /dev/sda, /dev/sdb e letras seguintes. Suas partições acrescentam um número, como em /dev/sda1. NVMe usa nomes como /dev/nvme0n1, com /dev/nvme0n1p1 para uma partição. Uma máquina virtual pode usar /dev/vda.

lsblk mostra dispositivos de blocos como uma árvore. TYPE distingue um disco de uma partição; RM indica se é removível e RO indica se é somente para leitura. SIZE informa a capacidade e MOUNTPOINTS mostra onde um dispositivo está em uso. Escolha detalhes adicionais com:

lsblk -o NAME,SIZE,MODEL
lsblk -f

O primeiro facilita a comparação de modelo e tamanho. O segundo acrescenta tipo de sistema de arquivos, rótulo e UUID. Nomes como sdb podem mudar conforme a ordem de detecção. Antes de gravar em um disco, confirme sua identidade usando mais do que a letra: gravar no dispositivo errado destrói seus dados.

Uma unidade vendida como 512 GB contém 512 bilhões de bytes. Em GiB, isso equivale a cerca de 476,8, exibido pelo lsblk como 476.8G. O dispositivo não perdeu capacidade: seu rótulo e a exibição usam unidades diferentes.

Encontre dispositivos e drivers associados
FerramentaO que procurar
lspciDispositivos PCI e PCI Express, como controladores de rede e armazenamento
lspci -kO driver em uso e possíveis módulos do kernel
lsusbIdentificadores e descrições de dispositivos USB
lsusb -tConexões USB em árvore, incluindo velocidades
lsmodMódulos do kernel carregados
modinfo e1000eInformações sobre um módulo

Um identificador USB como 046d:c52b identifica o fabricante e o produto de forma mais confiável que um nome genérico como “receptor sem fio”. Na saída de PCI, distinga Kernel modules, que nomeia possíveis módulos, de Kernel driver in use, que identifica um driver associado. A detecção, por si só, não significa que o suporte esteja funcionando.

A maioria dos drivers pode ser carregada como módulos do kernel, partes do código do kernel adicionadas quando necessário. Carregar ou remover módulos altera o kernel em execução e exige privilégios de root. Alguns drivers, por outro lado, são integrados ao kernel. Em placas ARM, muitos dispositivos integrados não estão em PCI, portanto uma listagem curta de lspci não significa necessariamente que falte hardware.

Acompanhe uma conexão no log do kernel

Quando um disco USB for conectado, execute sudo dmesg | tail ou inicie sudo dmesg -w antes de conectá-lo. Uma mensagem como [sdb] 60437492 512-byte logical blocks identifica o novo disco como /dev/sdb e informa sua capacidade. Multiplicar essas contagens de blocos resulta em 30.943.995.904 bytes: cerca de 30,9 GB ou 28,8 GiB.

Em seguida, compare a nova entrada do lsblk com essa mensagem e com o modelo do dispositivo. Se um adaptador detectado não funcionar, use lspci -k para verificar o driver e dmesg para ler erros de inicialização. A ausência de um driver associado e um driver que informa um erro exigem verificações posteriores diferentes.

Principais conclusões

  • Use lsblk para dispositivos de blocos, lspci para PCI e lsusb para USB.
  • Os nomes de disco seguem a ordem de detecção; verifique o dispositivo antes de gravar.
  • Uma unidade de 512 GB decimais corresponde a cerca de 476,8 GiB.
  • Verifique o driver associado e as mensagens do kernel após detectar um dispositivo.
3

Instalar e gerenciar software com gerenciadores de pacotes

Um gerenciador de pacotes relaciona arquivos de software a suas versões, dependências e fontes confiáveis. Escolher a ferramenta adequada para a distribuição permite instalar e manter software sem acompanhar cada biblioteca por conta própria. Você aprenderá as famílias de comandos Debian e Red Hat, separará a atualização das informações de pacotes da aplicação de atualizações de versão e identificará o pacote e a transação que forneceram um comando instalado.

3.1 Compreender pacotes, repositórios e dependências

Um pacote reúne arquivos de software com informações usadas para instalá-los e mantê-los. Seus metadados indicam a versão, a arquitetura e os pacotes necessários, e ele pode incluir scripts de instalação. Um gerenciador de pacotes registra quais arquivos pertencem a cada pacote instalado.

Identifique a família da distribuição
SistemasFormato de pacoteFerramenta de repositórioFerramenta de baixo nível
Debian, Ubuntu, Linux Mint.debaptdpkg
Fedora, RHEL, Rocky Linux, AlmaLinux, CentOS Stream.rpmdnfrpm
openSUSE, SUSE Linux Enterprise.rpmzypperrpm

Arch Linux usa pacman; Alpine Linux usa apk. O nome antigo yum pertence à família Red Hat. Se você não souber qual sistema possui, leia a saída de cat /etc/os-release antes de escolher os comandos.

Um arquivo como nginx_1.24.0-2_amd64.deb indica nginx, sua versão de software, revisão do empacotamento e arquitetura. Esses campos ajudam o gerenciador de pacotes a selecionar uma compilação compatível. Um nome de aplicativo conhecido não torna todo pacote baixado adequado para qualquer distribuição.

Deixe a ferramenta de alto nível resolver as dependências

Uma dependência é outro pacote necessário ao software, muitas vezes uma biblioteca compartilhada. Instalar um aplicativo pode, portanto, acrescentar vários pacotes. Uma ferramenta de alto nível, como apt ou dnf, encontra um conjunto compatível, baixa-o e solicita à ferramenta de nível inferior que o instale.

dpkg e rpm trabalham com arquivos de pacote locais e mantêm o banco de dados de pacotes instalados. Eles não buscam dependências ausentes nos repositórios. Usá-los para instalar um arquivo pode deixar requisitos ausentes para você resolver. Ferramentas de alto nível também podem instalar arquivos locais, resolvendo seus requisitos a partir dos repositórios configurados.

Buscas e consultas funcionam como usuário comum. Instalação, remoção e atualização de versões alteram arquivos do sistema e normalmente exigem sudo. A tela de confirmação contém informações úteis: inspecione os pacotes adicionais e quaisquer remoções propostas antes de aceitar.

Entenda a confiança nos repositórios

Um repositório fornece arquivos de pacote e índices que descrevem as versões e dependências disponíveis. Os repositórios da própria distribuição oferecem um conjunto compilado para sua versão.

O APT verifica os metadados assinados do repositório e usa as somas de verificação desses metadados para conferir os arquivos baixados. Ele normalmente não verifica uma assinatura separada em cada .deb. O DNF normalmente verifica as assinaturas dos RPMs da distribuição; a verificação da assinatura dos metadados do repositório é configurada separadamente. Essas verificações estabelecem uma cadeia até um fornecedor confiável e ajudam a detectar alterações indevidas.

Adicionar um repositório de terceiros também significa confiar no software e nos scripts de instalação desse fornecedor. Obtenha sua chave de assinatura seguindo as instruções autênticas do fornecedor. Não ignore as verificações de assinatura para contornar um erro como “NO_PUBKEY”. Um arquivo de uma página de download desconhecida também precisa ter uma origem confiável; a extensão do pacote, por si só, não oferece essa confiança.

Busque pelo nome correto

Nomes de software e de pacote podem ser diferentes. O Apache é empacotado como apache2 em sistemas da família Debian e httpd em sistemas da família Red Hat. O comando dig vem de bind9-dnsutils ou bind-utils. Pesquise antes de presumir que o nome de um comando também é o nome de seu pacote.

Outros sistemas de instalação mantêm registros separados. Snap, Flatpak e AppImage reúnem aplicativos com muitas dependências; pip e npm gerenciam bibliotecas de programação. Instalar uma biblioteca Python com pip não a transforma em um pacote gerenciado pelo apt.

Principais conclusões

  • Use a família de pacotes e a ferramenta de repositório correspondentes a /etc/os-release.
  • Ferramentas de alto nível buscam dependências; dpkg e rpm operam sobre pacotes e registros locais.
  • Repositórios fornecem índices de pacotes e uma cadeia de confiança até um fornecedor.
  • Nomes de pacotes podem diferir dos nomes de programas e variar entre distribuições.
  • Gerenciadores de pacotes do sistema e gerenciadores de aplicativos ou linguagens mantêm registros separados.

3.2 Instalar, atualizar e remover software com apt e dnf

A manutenção de pacotes tem três tarefas distintas: descobrir o que está disponível, aplicar as alterações selecionadas e remover software que não é mais necessário. Leia a transação planejada antes de confirmar, especialmente quando ela remove pacotes.

Atualize as listas e as versões
TarefaFamília DebianFamília Red Hat
Atualizar listas de pacotessudo apt updateO DNF atualiza metadados desatualizados automaticamente
Aplicar atualizações de versãosudo apt upgradesudo dnf upgrade
Instalar nginxsudo apt install nginxsudo dnf install nginx
Remover nginxsudo apt remove nginxsudo dnf remove nginx
Remover dependências desnecessáriassudo apt autoremovesudo dnf autoremove

apt update não atualiza o software. Ele baixa as listas de pacotes atuais. Execute em seguida sudo apt upgrade para instalar versões mais recentes. O comando de atualização do DNF cuida dos metadados desatualizados do repositório como parte de seu trabalho. O DNF4 usa dnf check-update para listar alterações disponíveis; o DNF5 usa dnf check-upgrade.

apt upgrade não remove um pacote instalado para concluir uma atualização. Um pacote que precise dessa alteração pode ter sua atualização adiada. sudo apt full-upgrade permite remoções, portanto inspecione seu plano com cuidado. -y aceita uma transação automaticamente e elimina sua oportunidade de revisá-la de forma interativa.

Instale de um repositório ou de um arquivo local

No Ubuntu, execute sudo apt update e depois sudo apt install htop. O APT lista novos pacotes e dependências antes de baixá-los. htop --version verifica o programa instalado. No Fedora, use sudo dnf install htop.

Executar apt install para um pacote existente pode atualizá-lo para a candidata atual; ele não altera nada se essa versão já estiver instalada. Para instalar um arquivo local confiável, informe seu caminho:

sudo apt install ./app_2.1.0_amd64.deb
sudo dnf install ./app-2.1.0-1.x86_64.rpm

O ./ indica um caminho de arquivo. Por outro lado, sudo dpkg -i file.deb e sudo rpm -i file.rpm não buscam dependências ausentes. Se o dpkg deixar dependências não satisfeitas, sudo apt --fix-broken install pode resolvê-las; inspecione o reparo proposto.

Remova software e configurações de forma consciente

O remove do APT mantém a configuração de sistema gerenciada do pacote; purge também a remove. Nenhum dos dois remove arquivos dos diretórios pessoais dos usuários. Autoremove atua sobre dependências instaladas automaticamente que não são mais necessárias aos pacotes instalados. Essa é uma decisão diferente de remover um aplicativo pelo nome.

As entradas de fontes do APT ficam em /etc/apt/sources.list e /etc/apt/sources.list.d/; o Ubuntu 24.04 geralmente usa ubuntu.sources nesse diretório. Atualize as listas após alterar as fontes. O DNF lê arquivos .repo em /etc/yum.repos.d/; dnf repolist mostra os repositórios habilitados.

Conclua a manutenção adequadamente

apt foi projetado para uso interativo. Scripts geralmente usam as interfaces mais estáveis de apt-get e apt-cache. Seus comandos abrangem as mesmas tarefas gerais, embora os padrões possam diferir.

Um kernel recém-instalado passa a ser o kernel em execução após a reinicialização. Programas que usam bibliotecas substituídas precisam ser reiniciados para carregar o novo código. O Ubuntu pode indicar a necessidade de reinicialização com /var/run/reboot-required.

Uma trava do gerenciador de pacotes muitas vezes significa que uma atualização automática ou outra operação de pacotes está ativa. Espere-a terminar; excluir o arquivo de trava pode danificar os registros de pacotes. Um erro de permissão, por outro lado, aponta para falta de privilégios, portanto confirme se a operação exige sudo.

Principais conclusões

  • apt update atualiza as listas; apt upgrade altera o software instalado.
  • O DNF atualiza metadados desatualizados durante a atualização; DNF4 e DNF5 usam nomes diferentes para verificar atualizações.
  • O remove do APT mantém a configuração de sistema gerenciada; purge a remove.
  • Use um caminho com apt ou dnf para instalar um arquivo local e resolver dependências.
  • Revise as remoções em uma atualização completa e as dependências propostas para autoremove.
  • Espere a operação que mantém a trava de pacotes terminar e reinicie o programa ou a máquina quando o código atualizado exigir.

3.3 Buscar pacotes e inspecionar o software instalado

Quando um comando está ausente ou uma versão muda, consultas de pacotes permitem investigar a partir do sintoma. Comece decidindo se você precisa de informações do repositório, informações de pacotes instalados ou do pacote ao qual um arquivo específico pertence.

Pesquise antes de instalar

apt search json e dnf search json pesquisam nomes e descrições de pacotes. Inspecione um resultado promissor com apt show NAME ou dnf info NAME. Eles mostram detalhes como versão, tamanho, descrição e repositório. A saída de show do APT também lista dependências; os requisitos no DNF podem ser consultados com dnf repoquery --requires NAME.

As informações do repositório respondem ao que você poderia instalar. Elas, por si só, não estabelecem o que já está instalado. apt policy NAME distingue a versão instalada da candidata, a versão que o APT selecionaria no momento. apt list --upgradeable ou dnf list --upgrades mostra pacotes instalados com atualizações disponíveis.

Consulte os registros de instalação
PerguntaFamília DebianFamília Red Hat
O que está instalado?apt list --installed ou dpkg -ldnf list --installed ou rpm -qa
Qual versão de um pacote está instalada?dpkg -l nginxrpm -q nginx
Quais arquivos vieram do htop?dpkg -L htoprpm -ql htop
A qual pacote pertence este arquivo instalado?dpkg -S /usr/bin/htoprpm -qf /usr/bin/htop

Em dpkg -l, o estado ii identifica um pacote instalado. A direção da consulta importa: -L parte de um pacote e lista seus arquivos; -S parte de um arquivo e encontra o pacote ao qual ele pertence. Em sistemas RPM, a distinção correspondente é entre -ql e -qf.

Identifique o pacote de um comando

Suponha que which openssl exiba /usr/bin/openssl. No Debian, dpkg -S /usr/bin/openssl identifica openssl como o pacote ao qual o arquivo pertence. apt policy openssl mostra então a versão instalada, a candidata e os repositórios. Isso evita presumir que o nome do comando deve sempre corresponder ao de seu pacote.

Para um comando ausente, pode não haver um pacote instalado a consultar. dnf provides /usr/bin/rsync pesquisa listas de arquivos dos repositórios. Sistemas da família Debian oferecem a ferramenta separada apt-file: após seu índice ser atualizado com sudo apt-file update, apt-file search bin/rsync encontra os pacotes que o fornecem. O Ubuntu também pode sugerir um pacote quando um comando não é encontrado.

Relacione uma falha a uma transação

O APT registra transações em /var/log/apt/history.log; o dpkg registra ações de nível inferior em /var/log/dpkg.log. No DNF4, dnf history lista transações; o DNF5 usa dnf history list. dnf history info 12 mostra os pacotes alterados na transação 12.

sudo dnf history undo 12 solicita a reversão dessa transação. Revise o plano: a reversão depende de as versões necessárias dos pacotes ainda estarem disponíveis e não restaura dados arbitrários de aplicativos. Para o diagnóstico, leia o histórico antes de fazer outra alteração. Uma atualização recente de biblioteca pode explicar por que o comportamento de um programa mudou, mesmo que ninguém tenha reinstalado o aplicativo principal.

Principais conclusões

  • Distinga as versões do repositório da versão realmente instalada.
  • Use dpkg -L ou rpm -ql para consultar os arquivos de um pacote.
  • Use dpkg -S ou rpm -qf para consultar a qual pacote pertence um arquivo instalado.
  • Um arquivo ausente exige uma busca pelo pacote que o fornece no repositório, não uma consulta de pacote instalado.
  • O histórico de transações ajuda a relacionar um novo problema a uma alteração recente de pacote.
4

Gerenciar serviços com systemd

Serviços continuam realizando tarefas úteis depois que um usuário sai do terminal. O systemd gerencia sua inicialização, seu estado atual e sua resposta a falhas, usando arquivos de unidade para descrever o que deve ser executado. Você interpretará o estado sem confundi-lo com a configuração de inicialização, controlará serviços agora e em futuras inicializações e fará pequenas alterações de configuração preservadas nas atualizações de pacotes. Um arquivo de serviço simples mostra como essas configurações se encaixam.

4.1 Compreender o systemd, as unidades e o estado dos serviços

Um serviço, frequentemente chamado de daemon, fornece uma função em segundo plano, como servir páginas web ou aceitar conexões SSH. Ele geralmente não tem terminal. Muitos nomes de daemons terminam em d, como em sshd e chronyd.

Encontre o gerenciador de serviços

Na maioria das principais distribuições, o systemd é executado como PID 1 e inicia os serviços na ordem necessária. Verifique com ps -p 1 -o comm=. O systemd pode supervisionar processos, reiniciar serviços com falha e organizar a coleta de seus logs. Algumas distribuições usam outro gerenciador, como o OpenRC do Alpine Linux.

O systemd gerencia unidades. Seus sufixos identificam suas funções:

SufixoFunção
.serviceExecutar e gerenciar um programa ou tarefa
.socketEscutar em um socket e ativar um serviço quando necessário
.timerAgendar uma ativação
.mountRepresentar um sistema de arquivos montado
.targetAgrupar unidades em um estado nomeado do sistema

Nos comandos de serviço, nginx é uma forma abreviada de nginx.service. Os nomes variam: o SSH geralmente usa ssh no Debian e no Ubuntu, e sshd no Fedora e no RHEL. O Apache é apache2 ou httpd. systemctl list-unit-files | grep ssh ajuda a encontrar o nome local.

Leia as duas linhas importantes de estado

Execute systemctl status nginx. Um exemplo pode incluir:

Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-10-21 09:14:03 UTC
Main PID: 2410 (nginx)

Loaded indica o arquivo de unidade e seu estado de habilitação. Active informa o estado atual e quando ele começou. Main PID identifica o processo principal; as linhas de log recentes vêm em seguida. Um usuário comum pode inspecionar o estado, mas a visualização dos logs do sistema pode exigir privilégios adicionais.

Ativo e habilitado são independentes. Ativo descreve o presente. Habilitado significa que links de habilitação foram criados, geralmente para que um alvo inicie o serviço na inicialização. Um serviço desabilitado ainda pode ser iniciado manualmente ou ativado por outra unidade. Um serviço habilitado pode estar parado ou com falha.

Interprete o estado corretamente
Estado ActiveInterpretação
active (running)O programa do serviço está em execução
active (exited)Uma tarefa concluída ainda é considerada ativa
inactive (dead)Não está ativo
failedUma inicialização ou execução falhou; examine o resultado e os logs
activatingA inicialização está em andamento

A cor do ponto de estado ajuda na leitura rápida, mas o texto do estado é a evidência útil. systemctl is-active nginx informa o estado atual; systemctl is-enabled nginx informa a habilitação. static significa que a unidade não tem instruções de habilitação e pode ser ativada por outro caminho. masked significa que sua inicialização está bloqueada.

Escolha a visão geral adequada

systemctl list-units --type=service mostra as unidades de serviço carregadas no momento, com seu filtro de estado padrão. Acrescente --all para incluir unidades carregadas inativas, ou --state=running para se concentrar nos serviços em execução. systemctl --failed isola as unidades com falha. systemctl list-unit-files --type=service lista arquivos de serviço instalados e estados de habilitação, incluindo serviços que não estão em execução agora.

Principais conclusões

  • O systemd gerencia unidades; uma unidade .service descreve um programa ou tarefa.
  • Leia Loaded para o arquivo de unidade e a habilitação, e Active para o estado atual.
  • Um serviço habilitado pode estar parado; um serviço desabilitado pode estar em execução.
  • active (exited) pode descrever uma tarefa concluída com sucesso.
  • Use list-unit-files para definições instaladas e list-units para unidades carregadas.

4.2 Iniciar, parar, habilitar e desabilitar serviços

O controle de serviços tem duas escalas de tempo: o que deve ser executado agora e o que deve iniciar automaticamente depois. Mantenha essas decisões separadas ao instalar software ou corrigir um serviço.

Controle o estado atual
ComandoEfeito
sudo systemctl start nginxIniciar agora
sudo systemctl stop nginxParar agora
sudo systemctl restart nginxParar e iniciar, interrompendo o trabalho atual
sudo systemctl reload nginxSolicitar que um serviço compatível releia a configuração
sudo systemctl reload-or-restart nginxRecarregar se houver suporte; caso contrário, reiniciar

Use systemctl status nginx após uma alteração. Para uma verificação silenciosa, systemctl is-active --quiet nginx retorna sucesso quando ele está ativo. O comando não exibe texto de estado, o que o torna útil em condições do shell.

O suporte ao recarregamento depende do serviço. Para o nginx, teste uma configuração alterada com sudo nginx -t antes de sudo systemctl reload nginx. Um recarregamento bem-sucedido pode aplicar novas configurações sem parar o serviço. Com uma configuração incorreta, o nginx mantém a configuração antiga em execução ao recarregar; reiniciar com o arquivo incorreto pode, por outro lado, deixá-lo fora do ar.

Configure a inicialização automática

sudo systemctl enable nginx cria links de habilitação; ele não inicia o nginx agora. sudo systemctl disable nginx remove esses links; ele não para o processo atual. Para fazer as duas alterações juntas:

sudo systemctl enable --now nginx
sudo systemctl disable --now nginx

O primeiro habilita e inicia; o segundo desabilita e para. Uma instalação do nginx no Fedora geralmente o deixa parado e desabilitado, enquanto a instalação do pacote na família Debian muitas vezes o inicia e habilita. Verifique o estado real após a instalação.

Após iniciar um serviço web, curl -I http://localhost pode verificar sua resposta local. Uma resposta local bem-sucedida e o acesso de outra máquina são testes diferentes; um firewall ainda pode bloquear o acesso remoto.

Bloqueie a ativação quando necessário

Desabilitar não impede que uma dependência ou um socket ative um serviço. O mascaramento bloqueia a inicialização vinculando o nome da unidade a /dev/null:

sudo systemctl mask bluetooth
sudo systemctl unmask bluetooth

O mascaramento, por si só, não para uma unidade que já está em execução. Pare-a também quando ela precisar deixar de funcionar. Desmascarar remove o bloqueio; isso, por si só, não inicia nem habilita o serviço. Uma tentativa de iniciar uma unidade mascarada informa que ela está mascarada.

Escolha o estado padrão do sistema

Um alvo agrupa unidades. multi-user.target fornece o ambiente multiusuário normal sem interface gráfica, geralmente usado em servidores. graphical.target acrescenta a área de trabalho. systemctl get-default informa o alvo padrão, e sudo systemctl set-default multi-user.target altera o alvo selecionado para futuras inicializações; ele não fecha imediatamente a área de trabalho atual.

sudo systemctl reboot reinicia a máquina e sudo systemctl poweroff a desliga. Para um único serviço, use seus próprios comandos de controle. Encerrar o PID de um serviço gerenciado pode provocar uma reinicialização automática; uma parada intencional com systemctl stop informa ao systemd que deve mantê-lo parado.

Principais conclusões

  • Start e stop afetam o presente; enable e disable alteram links de habilitação.
  • enable --now e disable --now combinam as duas escalas de tempo.
  • Desabilitar permite outros caminhos de ativação; mascarar bloqueia a inicialização.
  • O mascaramento, por si só, deixa em execução um serviço que já está ativo.
  • Teste a configuração do aplicativo antes de recarregar ou reiniciar.
  • Alterar o alvo padrão seleciona o comportamento de futuras inicializações.

4.3 Ler e personalizar arquivos de unidade

Um arquivo de unidade informa ao systemd como executar um serviço. Leia a configuração efetiva com systemctl cat NAME: ele exibe o arquivo base e quaisquer configurações substitutivas com seus caminhos.

Saiba onde ficam as configurações

Unidades fornecidas por pacotes ficam em /usr/lib/systemd/system/, também acessível como /lib/systemd/system/ em sistemas da família Debian. Arquivos locais do administrador e configurações substitutivas ficam em /etc/systemd/system/, que tem prioridade. Uma atualização de pacote pode substituir seu próprio arquivo, portanto mantenha as alterações locais em uma configuração substitutiva.

Um arquivo de unidade tem seções e configurações Key=value:

SeçãoConfigurações importantes
[Unit]Description=, ordenação com After=, dependências com Wants= ou Requires=
[Service]ExecStart=, User=, WorkingDirectory=, Environment=, Restart=
[Install]WantedBy=, usado ao habilitar a unidade

After=network.target define a ordem; ele não inicia esse alvo por si só nem garante conectividade com a internet. WantedBy=multi-user.target informa a enable que deve criar um link em multi-user.target.wants/. Uma unidade estática não tem instruções de habilitação, mas ainda pode ser ativada por outra unidade.

Crie um serviço simples

Para um pequeno servidor de teste, primeiro prepare /srv/hello com arquivos legíveis e uma conta de sistema:

sudo useradd --system --no-create-home hello

Com Python 3 instalado em /usr/bin/python3, escreva /etc/systemd/system/hello-web.service:

[Unit]
Description=Hello web server
After=network.target

[Service]
ExecStart=/usr/bin/python3 -m http.server 8080 --directory /srv/hello
User=hello
Restart=on-failure

[Install]
WantedBy=multi-user.target

Execute sudo systemctl daemon-reload e depois sudo systemctl enable --now hello-web. Inspecione systemctl status hello-web e faça uma requisição a http://localhost:8080 com curl. A conta de serviço precisa de permissão para ler o diretório e percorrer seus diretórios pais.

Com o Type=simple padrão, o programa permanece em primeiro plano para que o systemd possa acompanhá-lo. ExecStart= aceita um caminho absoluto de executável ou um nome de arquivo simples encontrado no caminho de busca do systemd. Um caminho relativo com uma barra, como ./server, é inválido. Um programa que cria um processo filho em segundo plano precisa de um tipo de serviço adequado, como Type=forking.

Substitua uma configuração fornecida por pacote

sudo systemctl edit nginx abre um arquivo de configuração complementar. Por exemplo:

[Service]
Restart=on-failure
RestartSec=5s

Salvar por meio de systemctl edit recarrega a configuração de unidades do systemd. Reinicie o serviço para aplicar alterações nas configurações de execução. Ao editar arquivos diretamente, execute sudo systemctl daemon-reload antes de reiniciar. Isso recarrega as definições de unidade, não a configuração do próprio aplicativo.

Substituir uma configuração de lista como ExecStart exige uma linha ExecStart= vazia antes da nova. sudo systemctl revert nginx remove as configurações substitutivas locais e restaura a configuração do fornecedor.

Restart=no deixa parado um processo que terminou. on-failure reinicia após falhas abrangidas pela política; always também abrange encerramentos normais. Uma parada intencional com systemctl stop impede a reinicialização automática. Falhas rápidas podem atingir um limite configurado de frequência de inicialização. Os padrões do gerenciador permitem cinco inicializações em 10 segundos; a configuração local pode alterá-los. Corrija a causa antes de limpar o estado de falha e tentar novamente.

Principais conclusões

  • Mantenha configurações locais em /etc/systemd/system/; inspecione-as com systemctl cat.
  • As seções da unidade separam descrição e dependências, execução e habilitação.
  • Execute um serviço simples em primeiro plano com uma conta adequada.
  • Recarregue as definições de unidade após edições diretas e reinicie para aplicar alterações de execução.
  • Um arquivo complementar é preservado nas atualizações de pacotes; configurações de lista podem exigir uma linha vazia de redefinição.
  • A política de reinício trata encerramentos de processos, enquanto limites de frequência impedem tentativas rápidas intermináveis.
5

Ler logs do sistema para diagnosticar e resolver problemas

O estado de um serviço informa que algo falhou; os logs ajudam a explicar por quê. O Linux registra mensagens no diário de registros do systemd, em arquivos de log de aplicativos e no buffer de mensagens do kernel. Você restringirá esses registros por serviço, inicialização, horário e gravidade e relacionará o primeiro erro útil a uma verificação específica. Um reparo disciplinado altera uma causa de cada vez e verifica tanto o serviço em execução quanto seu comportamento de inicialização pretendido.

5.1 Consultar o diário de registros do systemd com journalctl

O diário de registros do systemd coleta mensagens do kernel, da inicialização e dos serviços, incluindo a saída enviada ao diário por programas gerenciados. systemd-journald armazena registros binários indexados. Leia-os com journalctl; um leitor de arquivos de texto como less não consegue interpretar os próprios arquivos do diário.

Leia uma parte suficiente dos registros

O acesso ao diário do sistema depende das permissões e da política local. Root e grupos autorizados, como systemd-journal ou adm, podem ler entradas do sistema. Se uma conta comum vir apenas um conjunto limitado, use sudo journalctl para investigar o sistema.

A visualização padrão começa pelas mensagens antigas em um paginador. Use as teclas de seta para navegar, / para pesquisar e q para sair. Escolha uma visualização mais específica:

OpçãoEfeito
-rMais recentes primeiro
-eIr para o final
-n 50Últimos 50 registros
-fAcompanhar os registros recebidos até Ctrl+C
--no-pagerExibir diretamente, útil para pipes

-n sem um número seleciona dez entradas. A saída de estado geralmente mostra apenas algumas linhas recentes, portanto leia o diário quando elas não explicarem a falha.

Combine filtros de unidade, inicialização e horário

sudo journalctl -u nginx -b seleciona os registros do nginx desta inicialização. -b -1 seleciona a inicialização anterior; --list-boots lista os registros de inicializações preservados. -k seleciona mensagens do kernel e normalmente implica a inicialização atual. Para registros mais antigos do kernel, informe a inicialização explicitamente.

Filtros de tempo aceitam horários relativos e datas completas:

sudo journalctl -u nginx --since "2026-10-22 08:00" --until "2026-10-22 09:30"

--since today significa desde a meia-noite de hoje, enquanto --since "1 hour ago" fornece uma janela de tempo móvel. Strings de data e hora entre aspas permanecem juntas como um único argumento. Uma data sem horário começa à meia-noite.

Entenda o limite de prioridade

As prioridades vão de 0, emergência, a 7, depuração. Entre elas estão alerta, crítico, erro, aviso, notificação e informação. Números menores indicam maior gravidade. -p err inclui os níveis 0 a 3, não apenas erro. Use um intervalo explícito como -p err..warning para selecionar essa faixa.

Um filtro restrito de gravidade pode ocultar a evidência necessária. Por exemplo, o SSH pode registrar mensagens de senha malsucedida no nível de informação. No Ubuntu, sudo journalctl -u ssh --since today --grep "Failed password" encontra mensagens correspondentes sem excluí-las por um limite de aviso.

Uma linha como “Failed password for invalid user admin from 203.0.113.45” identifica a conta tentada e o endereço de origem. A data e hora e o PID do programa situam a mensagem na atividade ao redor. -o short-iso facilita a comparação de datas completas; -o verbose apresenta os campos, -o json-pretty exibe registros estruturados e -x acrescenta o texto explicativo disponível.

Saiba o que permanece após uma reinicialização

Diários de registros persistentes ficam em /var/log/journal/; diários voláteis em /run/log/journal/ desaparecem no desligamento. O comportamento de armazenamento é controlado por Storage= na configuração do journald. Uma única inicialização registrada pode significar que registros antigos nunca foram persistidos ou já foram removidos.

journalctl --disk-usage inclui arquivos ativos e inativos do diário. sudo journalctl --vacuum-size=500M remove arquivos inativos antigos até atingir um limite de 500 MiB para esses arquivos. Arquivos ativos não são removidos nessa operação, portanto o total informado de uso de disco pode permanecer maior.

Principais conclusões

  • Filtre por unidade, inicialização e horário antes de restringir a prioridade.
  • Um limite de prioridade inclui níveis mais graves, não apenas o nível indicado.
  • Registros de nível informativo podem conter a causa de um problema.
  • Diários persistentes sobrevivem à reinicialização; diários voláteis não.
  • A limpeza remove arquivos inativos, enquanto o uso de disco também contabiliza arquivos ativos.

5.2 Ler arquivos de log em /var/log e mensagens do kernel

O diário de registros não é a única fonte de logs. Alguns sistemas também executam rsyslog, e aplicativos podem gravar seus próprios logs de texto. O kernel mantém um buffer de mensagens separado na memória. Escolha a fonte que registrou o evento investigado.

Encontre o log de texto correto
FonteLocal comum
Mensagens gerais no Debian/Ubuntu, com syslog configurado/var/log/syslog
Autenticação no Debian/Ubuntu/var/log/auth.log
Log de texto do kernel no Debian/Ubuntu/var/log/kern.log
Mensagens gerais e autenticação na família RHEL/var/log/messages, /var/log/secure
Ações do APT e do dpkg/var/log/apt/history.log, /var/log/dpkg.log
Ações do DNF/var/log/dnf.log
Requisições e problemas do nginx/var/log/nginx/access.log, /var/log/nginx/error.log

A presença de um arquivo depende dos serviços de registro instalados e de sua configuração. O Debian 12 e posteriores geralmente dependem do diário de registros, a menos que o rsyslog seja instalado. Aplicativos ainda podem manter seus próprios logs em uma máquina assim.

Leia um arquivo de texto com sudo less /var/log/auth.log, inspecione seu final com sudo tail -n 20 /var/log/syslog ou acompanhe novas linhas com sudo tail -f /var/log/nginx/error.log. Para selecionar uma palavra sem distinguir maiúsculas de minúsculas, use sudo grep -i "error" /var/log/syslog.

Leia os campos e os arquivos mais antigos

Um exemplo clássico é:

Oct 22 08:01:17 web1 sshd[3141]: Accepted publickey for alice from 198.51.100.7 port 50522 ssh2

Ele informa a data e hora, o host, o programa com PID e a mensagem do evento. Alguns sistemas usam datas e horas ISO completas com deslocamentos de fuso horário. A mensagem descreve um login bem-sucedido por chave, não uma tentativa malsucedida de senha; ler apenas o nome do programa faz você perder essa distinção.

A rotação de logs limita o crescimento renomeando arquivos antigos, criando novos e, por fim, removendo arquivos expirados. A configuração de logrotate fica em /etc/logrotate.conf e /etc/logrotate.d/. Uma sequência como syslog, syslog.1 e syslog.2.gz abrange registros atuais e antigos. Use zless ou zgrep para texto compactado com gzip sem extraí-lo primeiro. Uma busca apenas no arquivo atual pode deixar passar a falha de ontem.

Leia eventos do kernel

O buffer circular do kernel mantém mensagens recentes e sobrescreve suas entradas mais antigas à medida que enche. Ele registra detecção de dispositivos, falhas de drivers, erros de armazenamento e encerramentos por falta de memória. dmesg o exibe; use sudo quando o acesso for restrito. dmesg -T fornece horários legíveis, dmesg -l err,warn seleciona erros e avisos, e dmesg -w acompanha novas mensagens.

sudo journalctl -k lê entradas do kernel mantidas pelo diário de registros. sudo journalctl -k -b -1 pode acessar uma inicialização anterior que o buffer circular atual não contém mais.

Se um processo Java desaparecer, uma linha do kernel como “Out of memory: Killed process 4810 (java)” relaciona seu encerramento à pressão sobre a memória. Verifique free -h e top e, em seguida, reduza a demanda de memória ou acrescente capacidade. Para problemas de inicialização de serviço, comece pelo diário da unidade; para detalhes específicos do aplicativo, leia seu próprio log de erros.

Use a rotação ou os controles de retenção do diário para gerenciar o espaço ocupado pelos logs. Excluir um log de texto manualmente remove evidências e pode deixar seu espaço em disco alocado até que o programa que grava nele feche o arquivo.

Principais conclusões

  • Os locais dos logs de texto dependem da configuração de registro; aplicativos podem manter seus próprios arquivos.
  • Use less, tail e grep para logs de texto, e zless ou zgrep para logs antigos compactados.
  • A rotação distribui um histórico de eventos por vários arquivos.
  • dmesg mostra o buffer atual do kernel; o diário pode preservar inicializações anteriores.
  • Mensagens de OOM do kernel podem explicar o desaparecimento de um aplicativo sem erro próprio.

5.3 Diagnosticar e corrigir falhas de um serviço passo a passo

Reinicializações repetidas raramente explicam uma falha. Comece pelo sintoma visível, obtenha a mensagem que identifica sua causa e altere uma coisa. Em seguida, teste o serviço corrigido tanto pelo gerenciador quanto pela função que ele oferece.

Siga uma investigação reproduzível
  1. Confirme o sintoma: por exemplo, uma requisição web local falha.
  2. Execute systemctl status NAME e leia Active, Result e o código de saída.
  3. Leia sudo journalctl -u NAME -b ou as últimas 50 entradas com -n 50 --no-pager.
  4. Use o log de erros e o teste de configuração do próprio aplicativo.
  5. Corrija uma causa identificada e repita a verificação relevante.
  6. Inicie ou reinicie, inspecione o estado e teste a função real.
  7. Verifique systemctl is-enabled NAME em relação ao comportamento de inicialização pretendido.

Leia o primeiro erro significativo da tentativa malsucedida. Uma linha posterior como “Failed to start” resume o resultado; ela pode não indicar a causa. Manter os filtros de horário e unidade alinhados ajuda a separar a tentativa mais recente de falhas anteriores.

Resolva um conflito de porta

Uma reinicialização do nginx falha. Seu diário de registros contém “bind() to 0.0.0.0:80 failed (98: Address already in use).” Algo já está escutando nessa porta. Execute:

sudo ss -tlnp | grep ':80 '

Suponha que ele identifique apache2. Se essa máquina deve usar nginx e o Apache não é mais necessário, sudo systemctl disable --now apache2 para o Apache e remove seus links de habilitação. Em seguida, sudo systemctl start nginx pode usar a porta. Verifique systemctl status nginx e faça uma requisição web local.

A condição importa: não remova um serviço necessário apenas para fazer um segundo iniciar. Se ambos precisarem funcionar, sua configuração de escuta precisa ser alterada de forma planejada. O log identifica o conflito de recurso, enquanto a função pretendida do sistema determina o reparo.

Resolva um erro de configuração

Suponha que o diário informe uma chave de fechamento inesperada em /etc/nginx/sites-enabled/default:24. Execute sudo nginx -t; ele identifica o mesmo arquivo e a mesma linha. Corrija a chave fora do lugar, execute o teste novamente e reinicie somente após o teste ser bem-sucedido. Isso isola a alteração e evita substituir uma configuração que está funcionando por uma incorreta.

Use o código de resultado para restringir a busca
Estado ou resultadoPróxima verificação
203/EXECCaminho do executável, permissão de execução e capacidade de iniciá-lo
217/USERConta em User= e capacidade de estabelecer suas credenciais
1/FAILUREMensagens de erro do próprio aplicativo
oom-killRegistros de OOM do kernel e uso de memória

Um executável ausente e um programa que inicia, mas rejeita suas configurações, são falhas diferentes. Para “Permission denied”, compare a saída de ls -l e o acesso ao diretório com o usuário configurado para o serviço. Para disco cheio, verifique df -h; para RAM baixa, verifique free -h; para pressão sobre a CPU, inspecione top.

Se o systemd informar “start request repeated too quickly”, primeiro corrija a causa. Em seguida, sudo systemctl reset-failed NAME limpa os contadores de falha e de limite de inicialização para que você possa iniciá-lo novamente. Redefinir apenas o contador não corrige o programa.

Principais conclusões

  • Confirme o sintoma, inspecione o estado e leia o primeiro erro que explica a causa.
  • Use as verificações do aplicativo e altere uma causa de cada vez.
  • Uma porta ocupada exige identificar quem está escutando nela antes do reparo.
  • Códigos de saída distinguem falhas de execução, credenciais de usuário, aplicativo e memória.
  • Limpe um limite de inicialização após corrigir a causa e verifique estado, função e comportamento de inicialização pretendido.
6

Empacotar e compactar arquivos

Um arquivo de armazenamento reúne arquivos em um único objeto; a compactação altera o espaço que esse objeto ocupa. Manter essas tarefas distintas facilita a leitura e a restauração de comandos de backup. Você criará e inspecionará arquivos tar, extrairá para um diretório escolhido e comparará gzip, bzip2, xz e zip. A escolha do formato depende de velocidade, tamanho, necessidades de compartilhamento e metadados dos arquivos, enquanto uma restauração verificada oferece evidência mais forte do que um nome de arquivo conhecido.

6.1 Criar, listar e extrair arquivos tar

Um arquivo de armazenamento reúne arquivos e diretórios com seus nomes e metadados. A compactação reduz os bytes necessários para armazenar dados. Um arquivo tar simples reúne arquivos sem compactá-los; adicionar um compactador produz arquivos como .tar.gz, .tar.bz2 ou .tar.xz.

Leia as opções como uma frase curta
OpçãoFunção
-c, -t, -xCriar, listar ou extrair; escolha uma operação
-f FILENomear o arquivo de armazenamento
-vMostrar nomes ou detalhes dos itens
-z, -j, -JUsar gzip, bzip2 ou xz
-C DIRMudar de diretório para os itens seguintes ou para a extração

O GNU tar também aceita opções combinadas e o estilo antigo sem hífen. Em um grupo combinado, mantenha f por último e coloque o nome de arquivo correspondente em seguida. O J maiúsculo seleciona xz; o j minúsculo seleciona bzip2.

Crie um arquivo de armazenamento com nomes úteis para os itens
tar -czvf site-backup.tar.gz -C /var/www site

Isso cria site-backup.tar.gz no diretório atual do shell. O tar muda seu local de entrada para /var/www e depois adiciona site, portanto os nomes armazenados começam com site/. Ele preserva a estrutura de diretórios, os modos de permissão, os metadados de proprietário e grupo e os registros de data e hora.

Informar /var/www/site diretamente também funciona. O GNU tar normalmente remove a barra inicial e armazena var/www/site/...; a extração então recria esse caminho abaixo do destino. Escolher o diretório de entrada com -C fornece uma estrutura de restauração mais curta e prática.

Liste antes de restaurar

Execute tar -tzvf site-backup.tar.gz. Ele lista nomes e metadados sem extrair. Verifique se todos os itens estão dentro de um único diretório. Caso contrário, a extração pode espalhar arquivos pelo destino. O GNU tar detecta formatos comuns de compactação durante a leitura, portanto tar -tvf site-backup.tar.gz também funciona.

Para restaurar em um diretório vazio existente:

tar -xzvf site-backup.tar.gz -C /tmp/restore

O destino já deve existir. A extração pode sobrescrever arquivos com nomes correspondentes, portanto use um diretório de restauração vazio ao verificar um arquivo de armazenamento desconhecido. Para extrair um item, informe seu nome exatamente como listado: tar -xzvf site-backup.tar.gz site/index.html.

Proteja o nome do arquivo de armazenamento e os metadados

A palavra após -f é o nome do arquivo de armazenamento. Em tar -cfz backup.tar.gz docs, o tar trata z como esse nome e as palavras seguintes como entradas. Da mesma forma, tar -cf *.txt permite que a expansão do shell escolha o primeiro arquivo de texto como arquivo de armazenamento de saída e pode sobrescrevê-lo. Sempre informe explicitamente o nome do arquivo de armazenamento.

Um usuário comum restaura arquivos como seu proprietário; root pode restaurar os proprietários registrados. Criar um backup exige acesso de leitura à origem. Para arquivos de sistema protegidos, use um comando autorizado como sudo tar -czf /root/etc-2026-10-22.tar.gz /etc e verifique seus erros para identificar arquivos omitidos.

--exclude='*.log' omite caminhos correspondentes. A opção -a do GNU tar seleciona um compactador pelo sufixo, como em tar -caf backup.tar.xz docs. Antes de remover os originais, leia o arquivo de armazenamento com tar -tzf backup.tar.gz > /dev/null e confirme que a listagem contém os arquivos esperados. Uma leitura bem-sucedida verifica a legibilidade; inspecionar uma restauração também verifica se o conteúdo escolhido é útil.

Principais conclusões

  • O empacotamento reúne arquivos e metadados; a compactação reduz o tamanho.
  • Escolha uma operação do tar e forneça a -f um nome explícito de arquivo de armazenamento.
  • -C controla a estrutura de entrada ou o destino da extração.
  • Liste antes de extrair e restaure em um diretório vazio para evitar sobrescritas.
  • Backups exigem permissão de leitura, e root pode restaurar os proprietários registrados.
  • Verifique o conteúdo legível e uma restauração antes de confiar no arquivo de armazenamento.

6.2 Compactar arquivos com gzip, bzip2, xz e zip

As ferramentas de compactação diferem em velocidade, tamanho e na forma como tratam os originais. Escolha um formato conforme a tarefa: reduzir rapidamente um log, fazer um backup de Linux ou disponibilizar um download para usuários de vários sistemas operacionais.

Compacte um arquivo e mantenha o original quando necessário
CompactadorSufixo compactadoComando de descompactação
gzip.gzgunzip ou gzip -d
bzip2.bz2bunzip2 ou bzip2 -d
xz.xzunxz ou xz -d

Essas ferramentas normalmente substituem um arquivo de entrada por sua versão compactada. gzip access.log deixa access.log.gz e remove o original após o sucesso. Acrescente -k para mantê-lo. Suas formas com -d invertem a operação.

Elas não criam um arquivo de armazenamento de diretório com vários arquivos. gzip project recusa um diretório; o gzip recursivo compacta seus arquivos individualmente. Para preservar uma árvore de diretórios como um único objeto compactado, crie um arquivo tar com o compactador escolhido.

Equilibre tempo, memória e tamanho

O gzip geralmente é rápido, o xz muitas vezes produz arquivos menores com maior custo de tempo e memória, e o bzip2 geralmente fica entre eles. Os resultados dependem da entrada e das configurações. Os níveis de -1 a -9 favorecem a velocidade na extremidade inferior e a compactação na superior. Os padrões são 6 para gzip e xz e 9 para bzip2.

Logs de texto muitas vezes diminuem bastante. Imagens JPEG, vídeos MP4 e arquivos de armazenamento compactados geralmente ganham pouco com outra compactação. Compactá-los novamente pode consumir tempo de CPU sem uma economia útil de espaço.

Em uma amostra de 240 MiB de logs, gzip produziu 31 MiB e xz, 22 MiB. Essas saídas mantêm cerca de 12,9% e 9,2% do tamanho original. Nessa amostra, o arquivo menor veio com um tempo de compactação maior; os valores não são previsões para outros dados.

Leia e teste conteúdo compactado

zcat, zless e zgrep leem texto compactado com gzip; bzcat e xzcat lidam com seus respectivos formatos. Por exemplo, zgrep "error" /var/log/syslog.2.gz pesquisa um log rotacionado sem deixar uma cópia descompactada no disco.

Use gzip -t file.gz ou xz -t file.xz para verificações de integridade. Um sufixo é apenas uma convenção de nomes: file backup.bin pode identificar conteúdo gzip mesmo sem .gz. sha256sum backup.tar.gz produz uma soma de verificação para comparação após a transferência. Somas de verificação iguais mostram que as cópias correspondem, não que todos os arquivos de origem desejados foram incluídos.

Compartilhe um diretório com zip

ZIP agrupa e compacta mantendo os arquivos de origem:

zip -r project.zip project
unzip -l project.zip
unzip project.zip -d /tmp/project

-r inclui o conteúdo do diretório recursivamente. unzip -l o lista; -d escolhe o destino da extração. Os comandos talvez precisem ser instalados primeiro. ZIP é prático para usuários de Windows e macOS. Ferramentas ZIP do Linux podem armazenar metadados Unix, mas restaurar proprietário, grupo e modos de permissão em outros sistemas é menos portátil do que usar tar para um backup de Linux.

Escolha .tar.gz para um backup rotineiro de Linux, .tar.xz quando reduzir um download for mais importante que o tempo de compactação, .zip para amplo compartilhamento entre computadores pessoais e gzip para um único arquivo de texto grande. Mantenha os arquivos de origem até que verificações e uma restauração de teste estabeleçam que o arquivo de armazenamento contém o que você precisa.

Principais conclusões

  • Gzip, bzip2 e xz compactam arquivos individuais e normalmente substituem suas entradas.
  • Use -k para manter um original; use tar para empacotar um diretório.
  • Os ganhos de compactação e os custos de recursos dependem da entrada e das configurações.
  • Use leitores de texto compactado e testes de integridade sem extrair tudo.
  • ZIP é prático para compartilhamento; tar é convencional para backups de Linux que preservam metadados.

Exercícios resolvidos de Processos, pacotes e serviços no Linux

6 Lições Interativas

1

Encontrar e controlar uma tarefa ocupada

17 passos
Interprete as informações dos processos, identifique o recurso limitante e escolha uma ação de controle adequada.
  1. 1
    IntroduçãoComece pelas tarefas em execução

    Um terminal ficou lento enquanto uma tarefa longa de compactação está em execução. Antes de interromper qualquer coisa, relacione o sintoma visível a um processo e a um recurso.

    Você passará de uma visão instantânea dos processos a informações de CPU e memória em tempo real e decidirá como pausar, interromper ou reduzir a prioridade da tarefa. O PID identifica o processo; o número de tarefa do shell tem outra finalidade ao movê-la entre o primeiro e o segundo plano.

  2. 2
    ExplicaçãoEncontre o usuário e a identidade

    Execute ps -ef para obter uma visão instantânea de todo o sistema com PID e PPID. Um comando iniciado no seu terminal geralmente é filho desse shell.

    Para colunas de CPU e memória, use ps aux. Um programa pode ter várias instâncias em execução, cada uma com seu próprio PID. Verifique o comando e o usuário ao escolher um alvo: um nome conhecido pode identificar vários processos, e um PID pode ser reutilizado após o término do processo anterior.

  3. 3
    ExemploInterprete corretamente o tempo de CPU

    Uma linha do ps mostra START 09:00, TIME 0:08 e estado S. O programa começou às 09:00 e acumulou oito segundos de trabalho da CPU. Ele está em espera por um evento.

    O tempo decorrido desde a inicialização não é o campo TIME. Um serviço pode aguardar requisições por horas e usar muito pouca CPU. Use pgrep -a NAME para encontrar linhas de comando relevantes e /proc/PID/status quando precisar da visão detalhada do kernel.

  4. 4
    DesafioInterprete um servidor em espera

    Um servidor foi iniciado ontem. Sua linha no ps tem TIME 0:12, TTY ? e estado S. Isso é evidência de que ele deixou de funcionar durante a maior parte do dia? Explique os três campos.

    ---reveal---

    Não. Ele usou 12 segundos de trabalho da CPU, não tem terminal de controle e está em espera no momento. Aguardar requisições é um comportamento normal de um serviço. Esses campos não informam por quantas horas o servidor esteve disponível nem se uma requisição específica foi bem-sucedida.

  5. 5
    ExplicaçãoAcompanhe o recurso que muda

    Abra top. Pressione P para ordenar por CPU, M por memória e 1 para CPUs individuais. Pressione q para sair.

    Leia o resumo junto com a lista de processos. Um alto uso de CPU por programas de usuário sugere processamento; wa alto direciona a atenção para operações de entrada e saída pendentes, e st alto em uma máquina virtual indica tempo de CPU do sistema hospedeiro retido do sistema convidado. RES mede a RAM residente; uma alocação VIRT grande, por si só, é uma medida inadequada do uso de memória física.

  6. 6
    ExemploCompare a carga com a capacidade da CPU

    Suponha que nproc informe 4 e uma carga de trabalho limitada principalmente pela CPU mostre a carga 6.00, 5.20, 3.10. Com pouca espera por entrada e saída, a carga recente significa que há mais tarefas prontas para executar do que quatro CPUs conseguem executar ao mesmo tempo.

    O valor de um minuto supera as médias dos períodos mais longos, indicando um aumento recente. A carga no Linux também conta esperas ininterruptíveis, portanto repita essa comparação considerando o resumo da CPU e os estados dos processos; o número não é uma porcentagem de CPU.

  7. 7
    Ideia-chaveLeia a RAM available antes de free

    free -h pode mostrar pouca RAM completamente livre enquanto vários GiB permanecem disponíveis. O Linux usa a RAM livre como cache e pode recuperar grande parte dela para novas tarefas.

    Available estima a capacidade sem recorrer à área de troca. Observe a combinação de memória available baixa e uso crescente da área de troca como evidência mais forte de pressão. Se o kernel encerrar tarefas porque a memória se esgotou, um registro de OOM em sudo journalctl -k pode explicar o encerramento repentino.

  8. 8
    DesafioEscolha o recurso a investigar

    Um servidor tem muitas tarefas no estado D, wa alto, baixo uso de CPU por programas de usuário e bastante RAM disponível. Qual recurso você deve investigar primeiro e por que a carga ainda pode estar alta?

    ---reveal---

    Investigue primeiro o armazenamento ou outras esperas por entrada e saída. O Linux inclui tarefas ininterruptíveis na carga, portanto uma carga alta pode coexistir com CPUs ociosas. Os valores de memória não indicam falta imediata de RAM, e uma carga alta, por si só, não identifica processamento de CPU como causa.

  9. 9
    ExplicaçãoSolicite primeiro um encerramento organizado

    Um sinal solicita que um processo execute uma ação. kill PID envia SIGTERM, dando ao programa a oportunidade de salvar seu estado e fechar recursos. SIGKILL força o encerramento sem executar seu código de limpeza.

    Verifique o alvo, envie TERM, dê tempo e confira novamente antes de recorrer ao sinal forçado. Um PID que agora pertence a um novo comando identifica outro processo. Para um serviço supervisionado pelo systemd, solicite sudo systemctl stop NAME por meio do gerenciador.

  10. 10
    ExemploPause e continue de forma consciente

    kill -STOP 5120 pausa o processo 5120; kill -CONT 5120 o retoma. O processo mantém sua memória e seus arquivos abertos durante a pausa.

    Ctrl+Z envia uma solicitação de pausa à tarefa em primeiro plano no terminal, enquanto Ctrl+C envia uma interrupção que normalmente a encerra. Um zumbi já terminou e não pode ser encerrado novamente. Uma tarefa em espera ininterruptível pelo armazenamento pode permanecer visível até que essa espera termine, mesmo após um sinal de encerramento forçado.

  11. 11
    DesafioMantenha um serviço gerenciado parado

    Um processo de trabalho gerenciado reinicia depois que você encerra seu PID. Você quer mantê-lo parado agora para manutenção. Qual ação é adequada e por que encerrar o novo PID é uma rotina ruim?

    ---reveal---

    Use sudo systemctl stop NAME. O gerenciador de serviços entende que essa parada é intencional e cuida dos processos gerenciados. Encerrar outro PID pode repetir o mesmo ciclo de recuperação de falha, pois o systemd pode tratar o encerramento do processo como motivo para reiniciar o processo de trabalho.

  12. 12
    ExemploMova uma tarefa sem perdê-la

    Inicie sleep 300 em primeiro plano e pressione Ctrl+Z. O Bash informa a tarefa como Stopped. bg %1 retoma a tarefa 1 e devolve o prompt, e fg %1 a traz de volta para primeiro plano.

    O %1 é uma seleção de tarefa local ao shell, não o PID 1. Uma tarefa parada não terminou: ela mantém recursos. Se a saída de uma tarefa em segundo plano atrapalhar o terminal, envie-a para um arquivo antes de deixar a tarefa em execução.

  13. 13
    DicaPrepare uma tarefa para o encerramento da sessão

    Para uma nova tarefa longa, use nohup ./long-task.sh > task.log 2>&1 &. Nohup faz a tarefa ignorar HUP, o redirecionamento coloca os dois fluxos de saída em um arquivo e o E comercial a coloca em segundo plano.

    Cada parte tem uma função distinta. Um E comercial sozinho não protege contra o fechamento do terminal. disown %1 do Bash pode remover uma tarefa existente da tabela de tarefas do shell, mas sua entrada e sua saída ainda precisam de destinos adequados.

  14. 14
    ExplicaçãoReduza a prioridade sem impor um limite de velocidade

    Inicie uma tarefa pesada com nice -n 10 COMMAND a partir do valor nice usual 0, ou ajuste uma tarefa em execução com renice -n 15 -p PID. Valores nice maiores reduzem a prioridade normal de escalonamento de CPU.

    O intervalo vai de -20 a 19. Um usuário comum geralmente pode tornar suas próprias tarefas menos competitivas; aumentar sua prioridade normalmente exige root. Uma tarefa com nice 19 ainda usa totalmente uma CPU ociosa, e o valor nice não define a prioridade de acesso ao disco.

  15. 15
    DesafioAjuste uma tarefa em segundo plano em execução

    Sua tarefa de compactação em segundo plano tem PID 9328 e nice 0. Você quer que ela dê mais oportunidade de CPU a tarefas interativas concorrentes sem pausá-la. Qual comando e efeito são adequados?

    ---reveal---

    renice -n 15 -p 9328 reduz sua prioridade de CPU ao aumentar seu valor nice. A tarefa continua em execução e recebe menos oportunidade quando há disputa pela CPU. Enviar STOP a pausaria completamente, enquanto escolher um valor nice negativo aumentaria sua prioridade.

  16. 16
    DesafioRelacione as evidências a uma resposta

    Um backup está ativo com nice 0. O top mostra que ele usa várias CPUs, com baixa espera por entrada e saída e RAM disponível suficiente; uma tarefa interativa está lenta. Você precisa encerrar o backup para ajudar a tarefa interativa?

    ---reveal---

    Não. As evidências indicam disputa pela CPU, portanto aumentar o valor nice do backup pode dar mais oportunidade à tarefa interativa enquanto o backup continua. Se for necessário interrompê-lo depois, identifique novamente o processo e solicite um encerramento organizado antes de considerar o uso de força.

  17. 17
    RecapitulaçãoCombine a ação com as evidências

    Use ps e pgrep para estabelecer a identidade e depois top, free e carga para compreender a pressão sobre os recursos. Leia o estado antes de interpretar um processo que parece travado.

    Um encerramento organizado, uma pausa, uma movimentação para segundo plano e uma alteração de prioridade resolvem problemas diferentes. Deixe o controle de serviços com o systemd, distinga tarefas locais de PIDs e verifique o resultado após alterar uma tarefa em execução.

2

Criar um relatório útil de hardware

10 passos
Identifique a arquitetura e a capacidade e relacione os dispositivos detectados aos drivers e às mensagens do kernel.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoReúna fatos que respondam ao requisito
  2. 2
    ExplicaçãoIdentifique as camadas do sistema
  3. 3
    ExemploConte os componentes da CPU
  4. 4
    ExplicaçãoCompare a memória instalada e a utilizável
  5. 5
    DesafioVerifique um requisito mínimo
  6. 6
    ExemploInterprete uma árvore de armazenamento
  7. 7
    ExplicaçãoRelacione um dispositivo ao seu driver
  8. 8
    DesafioIdentifique um disco recém-conectado
  9. 9
    DesafioDistinga capacidade de suporte do driver
  10. 10
    RecapitulaçãoTorne o relatório específico
3

Instalar software e identificar o que mudou

14 passos
Use repositórios, selecione operações de manutenção e identifique os pacotes dos arquivos instalados.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoMantenha relacionados arquivos e registros de pacotes
  2. 2
    ExplicaçãoEscolha a ferramenta de repositório
  3. 3
    Ideia-chaveUma dependência faz parte do plano
  4. 4
    DesafioExplique os pacotes adicionais
  5. 5
    ExemploAtualize as listas antes de instalar
  6. 6
    ExplicaçãoVeja o que uma atualização permite
  7. 7
    DicaDecida o que a remoção deve manter
  8. 8
    DesafioSepare a atualização das listas da aplicação
  9. 9
    ExemploIdentifique o pacote de um comando
  10. 10
    ExplicaçãoPesquise além dos arquivos instalados
  11. 11
    DesafioEscolha a direção da consulta
  12. 12
    ConexãoRelacione uma falha à manutenção recente
  13. 13
    DesafioRepare com base nas evidências
  14. 14
    RecapitulaçãoVerifique o estado de que você realmente precisa
4

Executar um serviço agora e após a reinicialização

14 passos
Interprete o estado de um serviço, escolha comandos de controle e aplique uma configuração substitutiva local de unidade.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoFaça duas perguntas sobre o estado
  2. 2
    ExemploLeia Loaded e Active
  3. 3
    Ideia-chaveUma unidade ativa não precisa ter um processo em execução
  4. 4
    DesafioInterprete um serviço desabilitado, mas em execução
  5. 5
    ExplicaçãoEscolha agora, depois ou ambos
  6. 6
    ExemploAplique uma configuração de aplicativo
  7. 7
    DesafioBloqueie um serviço sem esquecer seu processo
  8. 8
    ExplicaçãoLeia a definição efetiva da unidade
  9. 9
    ExemploDescreva um servidor simples em primeiro plano
  10. 10
    ExemploFaça uma configuração substitutiva sobreviver às atualizações
  11. 11
    DesafioAplique um comando editado diretamente
  12. 12
    Ideia-chaveAs regras de reinício respeitam uma parada solicitada
  13. 13
    DesafioVerifique um serviço após uma alteração de unidade
  14. 14
    RecapitulaçãoMantenha cada camada distinta
5

Encontrar a causa da falha de um serviço

13 passos
Filtre logs, interprete um erro que explica a causa e verifique um reparo de cada vez.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoComece por um sintoma observável
  2. 2
    ExplicaçãoSelecione o serviço e a tentativa
  3. 3
    ExemploMantenha mensagens úteis de baixa prioridade
  4. 4
    DesafioPesquise a inicialização correta
  5. 5
    ExplicaçãoEncontre logs de aplicativos e logs rotacionados
  6. 6
    ExemploVerifique o encerramento silencioso de um aplicativo
  7. 7
    DesafioEscolha uma fonte de texto mais antiga
  8. 8
    ExemploComece pelo primeiro erro que explica a causa
  9. 9
    ExemploIdentifique quem usa uma porta ocupada
  10. 10
    Ideia-chaveUse códigos de resultado para escolher a próxima verificação
  11. 11
    DesafioRecupere-se de uma falha com limite de frequência
  12. 12
    DesafioVerifique sem perder evidências
  13. 13
    RecapitulaçãoDeixe cada descoberta orientar o próximo passo
6

Criar um arquivo de armazenamento que possa ser restaurado

11 passos
Escolha os caminhos armazenados, verifique o conteúdo do arquivo e compare formatos de compactação e compartilhamento.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoPlaneje a restauração antes do empacotamento
  2. 2
    ExplicaçãoSepare o agrupamento da redução de tamanho
  3. 3
    ExemploCrie caminhos relativos úteis
  4. 4
    ExemploInspecione e extraia em etapas separadas
  5. 5
    DesafioPreveja a estrutura da extração
  6. 6
    DicaMantenha f junto ao nome do arquivo
  7. 7
    ExplicaçãoSaiba quais originais permanecem
  8. 8
    ExemploEscolha um formato para a tarefa
  9. 9
    DesafioMantenha um log ao compactá-lo
  10. 10
    DesafioVerifique a cópia e o conteúdo
  11. 11
    RecapitulaçãoUse o formato e as verificações adequados

Questões de Processos, pacotes e serviços no Linux

50 Questões de Prática em 5 conjuntos

Conjunto 1: Aplicar comandos cotidianos de manutenção do Linux10 Questões de Prática

Questão 1 de 10

O Bash mostra [3] 9026 após iniciar uma tarefa. Como você traz essa tarefa para primeiro plano?
  1. fg %9026
  2. bg %3
  3. fg %3
  4. kill -CONT 3
Mostrar respostaOcultar resposta
Resposta: C
O número entre colchetes é o número de tarefa do shell, portanto fg %3 seleciona essa tarefa e lhe entrega o terminal. O número maior é seu PID, não seu número de tarefa. Bg a continuaria em segundo plano, enquanto continuar um processo com um sinal não transfere o controle do terminal.

Questão 2 de 10

Um servidor com oito CPUs tem tarefas limitadas principalmente pela CPU, pouca espera por entrada e saída e cargas médias 12.0, 8.0, 4.0. Qual é a melhor interpretação?
  1. A demanda recente de CPU supera a capacidade e aumentou.
  2. A demanda recente de CPU é baixa e diminuiu.
  3. Doze por cento da capacidade de CPU está em uso.
  4. Todas as tarefas estão bloqueadas no acesso ao armazenamento.
Mostrar respostaOcultar resposta
Resposta: A
Com pouca espera por entrada e saída, a carga 12 representa mais trabalho pronto para executar do que oito CPUs conseguem processar ao mesmo tempo. A média de um minuto também supera as médias dos períodos mais longos, indicando um aumento recente. Interpretar 12 como 12% ignora a unidade da carga: ela conta tarefas, não uma parcela da capacidade da CPU.

Questão 3 de 10

Um adaptador de rede PCI aparece em lspci, mas não tem uma linha Kernel driver in use. O que você deve investigar em seguida?
  1. O número da tarefa em primeiro plano do shell
  2. Apenas o nome comercial divulgado do dispositivo
  3. Apenas o histórico de pacotes do usuário atual
  4. A associação do driver e as mensagens de erro do kernel
Mostrar respostaOcultar resposta
Resposta: D
A listagem do barramento mostra que o adaptador foi detectado, enquanto a ausência da linha de driver associado aponta para a configuração do driver. As mensagens do kernel podem explicar por que um driver não foi inicializado ou associado. Um nome comercial, por si só, é uma evidência mais fraca que o identificador do dispositivo e não pode demonstrar que o Linux está usando o driver para operá-lo.

Questão 4 de 10

Em um sistema Debian, como você encontra o pacote instalado ao qual /usr/bin/less pertence?
  1. dpkg -L /usr/bin/less
  2. dpkg -S /usr/bin/less
  3. apt search /usr/bin/less
  4. apt policy /usr/bin/less
Mostrar respostaOcultar resposta
Resposta: B
Dpkg -S pesquisa a qual pacote instalado um arquivo pertence, partindo de um caminho. Dpkg -L segue na direção oposta: espera um nome de pacote e lista os arquivos desse pacote. Buscas de texto em repositórios e consultas de versão candidata não substituem o banco de dados de arquivos instalados para essa pergunta.

Questão 5 de 10

Você quer remover um pacote Debian, mas manter sua configuração de sistema gerenciada para uma reinstalação posterior. Qual operação é adequada?
  1. sudo apt remove NAME
  2. sudo apt purge NAME
  3. sudo apt autoremove
  4. sudo apt update
Mostrar respostaOcultar resposta
Resposta: A
O remove do APT exclui os arquivos empacotados do programa enquanto mantém sua configuração de sistema gerenciada. Purge também remove essa configuração preservada, portanto contraria a reinstalação pretendida. Autoremove seleciona dependências automáticas desnecessárias e não é uma solicitação para remover esse aplicativo específico pelo nome.

Questão 6 de 10

Você edita diretamente no disco a linha ExecStart de uma unidade. Qual sequência aplica o novo comando a um serviço em execução?
  1. Recarregar o aplicativo e depois habilitá-lo
  2. Executar daemon-reload e reiniciar o serviço
  3. Habilitar o serviço e consultar seus arquivos
  4. Consultar seu estado e apenas executar reset-failed
Mostrar respostaOcultar resposta
Resposta: B
Daemon-reload faz o systemd reler as definições de unidade, e uma reinicialização inicia o programa usando a definição alterada. Um recarregamento do aplicativo trata da configuração do próprio aplicativo, não da linha ExecStart do systemd. Links de habilitação e contadores de falha não aplicam um novo executável a um processo em execução.

Questão 7 de 10

Um evento de dois dias atrás está ausente do log de texto atual. O diretório também contém app.log.2.gz. Como você pode pesquisar diretamente esse arquivo mais antigo?
  1. journalctl -u app.log.2.gz
  2. tail -f app.log
  3. gzip app.log.2.gz
  4. zgrep "timeout" app.log.2.gz
Mostrar respostaOcultar resposta
Resposta: D
Zgrep lê texto compactado com gzip e o pesquisa sem deixar uma cópia descompactada. Acompanhar o log atual apenas observa novas linhas e não pode recuperar um evento movido para um arquivo rotacionado. Journalctl lê registros do diário, não um caminho arbitrário de log de texto compactado fornecido como nome de unidade.

Questão 8 de 10

Um serviço personalizado informa 203/EXEC. Seu diário não contém nenhuma mensagem de inicialização do aplicativo. O arquivo de unidade indica /opt/worker/run, mas esse caminho está ausente. Qual sequência de reparo corresponde às evidências?
  1. Criar o usuário do serviço, limpar o diário e reiniciar
  2. Aumentar RestartSec e esperar a próxima tentativa automática
  3. Corrigir ExecStart, recarregar as definições, iniciar e verificar
  4. Habilitar o serviço e reiniciar a máquina sem alterar o comando
Mostrar respostaOcultar resposta
Resposta: C
O executável ausente corresponde a uma falha na etapa de execução, portanto corrija o caminho antes de reler a definição de unidade e testar uma inicialização. Uma conta ausente direcionaria a atenção para outro estado, como 217/USER. Adiar tentativas ou habilitar a unidade deixa o executável inexistente inalterado.

Questão 9 de 10

Você precisa compactar report.log com gzip e manter o arquivo descompactado. Qual comando é adequado?
  1. gzip -k report.log
  2. gzip report.log
  3. gunzip report.log
  4. tar -cf report.log.gz report.log
Mostrar respostaOcultar resposta
Resposta: A
A opção -k informa ao gzip que deve manter sua entrada após uma compactação bem-sucedida. O gzip simples normalmente substitui report.log por report.log.gz, removendo a cópia descompactada. Nomear um arquivo tar simples com o sufixo .gz não o compacta com gzip; a extensão, por si só, não seleciona essa operação.

Questão 10 de 10

No Debian, o dpkg instalou de forma incompleta um pacote local confiável porque faltavam duas dependências. Outra atualização automática mantém a trava do gerenciador de pacotes no momento. Qual é a melhor sequência a seguir?
  1. Excluir o arquivo de trava e repetir a instalação de baixo nível
  2. Remover completamente o pacote principal e desativar verificações de assinatura
  3. Aguardar a operação que mantém a trava e revisar uma transação de reparo do apt
  4. Atualizar as listas de pacotes e presumir que as bibliotecas ausentes estão instaladas
Mostrar respostaOcultar resposta
Resposta: C
Espere a operação de pacotes ativa terminar para que dois processos de gravação não interfiram nos registros de instalação. Em seguida, sudo apt --fix-broken install pode propor um reparo de dependências para revisão. Repetir apenas o dpkg não pode buscar os pacotes ausentes, e excluir uma trava em uso compromete a proteção necessária ao banco de dados de pacotes.
Conjunto 2: Interpretar processos, pacotes e estados de serviços10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um processo tem START 06:20 e TIME 0:04. O que TIME informa?
  1. Quatro segundos desde o início
  2. Quatro segundos de trabalho da CPU
  3. Quatro minutos desde o início
  4. Quatro minutos aguardando entrada
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um servidor mostra 0,2 GiB de RAM free, 6,1 GiB de RAM available e nenhum aumento no uso da área de troca. O que isso sugere sobre a pressão sobre a memória?
  1. A RAM está esgotada porque free é baixo.
  2. É preciso acrescentar área de troca para novas tarefas.
  3. O cache está permanentemente indisponível.
  4. Há uma margem considerável de RAM.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Você verificou que o PID 6842 é seu editor que não responde. Qual sinal normalmente deve enviar primeiro para solicitar o encerramento?
  1. SIGTERM
  2. SIGKILL
  3. SIGSTOP
  4. SIGCONT
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Você precisa da versão do kernel atualmente em execução em um servidor. Qual comando a fornece?
  1. cat /etc/os-release
  2. uname -m
  3. uname -r
  4. nproc
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

A instalação de um aplicativo também exigirá dois pacotes de bibliotecas dos repositórios configurados. Por que apt é mais conveniente que dpkg para essa tarefa?
  1. Ele faz qualquer arquitetura de pacote funcionar.
  2. Ele elimina a necessidade de confiar em fornecedores.
  3. Ele resolve e baixa as dependências.
  4. Ele instala sem alterar arquivos do sistema.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um administrador executa apenas sudo apt update. O que mudou quando o comando é bem-sucedido?
  1. Todas as versões de aplicativos instalados
  2. As listas locais de pacotes dos repositórios
  3. O kernel atualmente na memória
  4. A configuração de sistema de cada pacote
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um serviço informa enabled e inactive (dead). Como você deve interpretar essa combinação?
  1. Configurado para ativação automática, parado agora
  2. Em execução agora, excluído da ativação automática
  3. Com falha agora, impedido de iniciar no futuro
  4. Em execução agora, aguardando links de inicialização
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um serviço parado deve iniciar agora e ser habilitado para futuras inicializações. Qual comando combina essas ações?
  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx
  3. sudo systemctl unmask nginx
  4. sudo systemctl enable --now nginx
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Você quer os registros do nginx da inicialização atual, incluindo mensagens de nível informativo. Qual comando seleciona esse escopo?
  1. sudo journalctl -u nginx -b -1
  2. sudo journalctl -u nginx -b
  3. sudo journalctl -u nginx -b -p err
  4. sudo journalctl -k -b
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Você empacota /srv/notes/day.txt, pertencente a root, com tar -czf notes.tar.gz -C /srv notes. Como usuário comum, você executa tar -xzf notes.tar.gz -C /tmp/inspect nesse diretório vazio existente. Qual caminho e proprietário o arquivo restaurado normalmente terá?
  1. /tmp/inspect/srv/notes/day.txt, pertencente ao usuário que extrai
  2. /tmp/inspect/notes/day.txt, pertencente a root
  3. /srv/notes/day.txt, pertencente ao usuário que extrai
  4. /tmp/inspect/notes/day.txt, pertencente ao usuário que extrai
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Relacionar evidências à ação correta10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um processo está marcado como Z, e seu processo pai continua em execução. Por que enviar SIGKILL a esse PID não remove a entrada?
  1. O processo está pausado e precisa de SIGCONT antes de terminar.
  2. O processo está calculando com um valor nice negativo.
  3. O processo está bloqueado até o armazenamento terminar uma operação.
  4. O processo terminou e aguarda a coleta pelo processo pai.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Sua anotação antiga identifica a tarefa data-export pelo PID 7440, mas o ps agora mostra esse PID executando um editor. pgrep encontra dois processos data-export: o PID 8550 é seu data-export --daily; o PID 8551 é o data-export --weekly de outro usuário. Você quer que apenas sua tarefa diária termine de forma organizada. Qual ação é adequada?
  1. Enviar SIGTERM ao PID anotado 7440
  2. Verificar o PID 8550 e, em seguida, enviar SIGKILL a ele
  3. Verificar o PID 8550 e enviar SIGTERM a ele
  4. Usar pkill data-export com privilégios de root
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma organização uniforme de CPU tem 2 soquetes, 3 núcleos por soquete e 2 threads por núcleo. Quantos núcleos físicos e CPUs lógicas ela fornece?
  1. 6 núcleos e 12 CPUs lógicas
  2. 12 núcleos e 12 CPUs lógicas
  3. 3 núcleos e 6 CPUs lógicas
  4. 6 núcleos e 6 CPUs lógicas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O APT rejeita os metadados de um repositório recém-adicionado porque a chave de assinatura esperada está ausente. Qual resposta preserva a verificação de confiança pretendida?
  1. Aceitar metadados sem assinatura uma vez porque o pacote é conhecido
  2. Verificar o fornecedor e instalar corretamente sua chave autêntica
  3. Baixar o mesmo pacote de um espelho não verificado
  4. Usar dpkg para que a chave ausente não bloqueie a instalação
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

A versão instalada de um pacote é 3,2 e sua candidata no APT é 3,4. O que isso significa?
  1. A versão 3,2 está instalada; a 3,4 está selecionada para atualização.
  2. A versão 3,4 está instalada; a 3,2 é usada antes da reinicialização.
  3. Ambas as versões estão instaladas porque policy lista dois valores.
  4. A versão 3,2 está disponível apenas em um repositório desabilitado.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um serviço mostra active (exited) após concluir com sucesso uma tarefa de configuração executada uma vez. O que esse estado significa?
  1. Seu programa principal ainda deve estar usando CPU.
  2. Sabe-se que a tarefa de configuração falhou.
  3. Sua unidade está impedida de iniciar no futuro.
  4. A tarefa concluída ainda é considerada ativa.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma atualização de pacote apagou sua edição no arquivo do fornecedor. Você precisa substituir permanentemente seu único comando ExecStart e aplicar o novo comando agora. Qual sequência é adequada?
  1. Editar o novo arquivo do fornecedor, acrescentar outro ExecStart e habilitar
  2. Criar um arquivo complementar local, redefinir ExecStart, fornecer o substituto e reiniciar
  3. Criar um arquivo complementar local, acrescentar outro ExecStart e habilitar
  4. Criar um arquivo complementar local, redefinir ExecStart e recarregar apenas o aplicativo
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Quais níveis de prioridade são incluídos por journalctl -p err?
  1. Somente erro, apenas o nível 3
  2. De erro a depuração, níveis 3–7
  3. De emergência a erro, níveis 0–3
  4. Aviso e informação, níveis 4–6
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

O log de um serviço informa primeiro um erro de sintaxe na configuração, depois falhas repetidas e um limite de frequência de inicialização. Você corrige o arquivo e seu teste de sintaxe é bem-sucedido. O que deve vir em seguida?
  1. Aumentar a prioridade de CPU, reiniciar a máquina e excluir registros antigos
  2. Redefinir o estado de falha e presumir que o serviço está reparado
  3. Habilitar a unidade e esperar sem solicitar uma nova inicialização
  4. Redefinir o estado de falha, iniciar o serviço e verificar estado e função
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma equipe precisa de um único arquivo compactado de diretório que usuários de Windows e macOS possam abrir facilmente em seus computadores. Qual comando é uma escolha adequada?
  1. gzip -r handoff
  2. zip -r handoff.zip handoff
  3. zip handoff.zip handoff
  4. xz handoff
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Diagnosticar problemas de manutenção com várias ferramentas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma tarefa de compactação pode ser reiniciada do começo com segurança. Ela foi iniciada com nice 0 em um terminal, compete com tarefas interativas e deve continuar após o encerramento da sessão. Qual novo plano de inicialização atende a essas necessidades?
  1. Colocá-la em segundo plano com & e fechar o terminal sem outras alterações
  2. Reiniciá-la com nohup, redirecionamento de saída e ajuste nice positivo
  3. Usar nohup com nice -10 para que a tarefa interativa receba mais CPU
  4. Redirecionar a saída e parar o processo com SIGSTOP até amanhã
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um servidor com 12 CPUs tem carga 18, baixo uso de CPU por programas de usuário e muitas tarefas no estado D. A RAM available é alta e o uso da área de troca é estável. Qual evidência deve orientar a próxima investigação?
  1. Esperas pelo armazenamento podem explicar a carga apesar das CPUs ociosas.
  2. A demanda de CPU, por si só, prova que mais núcleos são necessários.
  3. O baixo uso de CPU por usuários prova que a exibição de carga está quebrada.
  4. O esgotamento da memória explica todas as tarefas no estado D do host.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um disco USB era /dev/sdb ontem. Hoje outro dispositivo foi conectado primeiro, e uma gravação no disco errado apagaria arquivos necessários. O que deve determinar seu alvo agora?
  1. A letra do dispositivo de ontem, pois nomes USB são permanentes
  2. A primeira entrada removível, independentemente da capacidade atual
  3. O tamanho, o modelo e o UUID atuais correspondentes ao disco pretendido
  4. O dispositivo com a primeira letra após uma reinicialização do sistema
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O APT adia a atualização de um aplicativo porque ela exige a remoção de um pacote instalado. Um novo pacote de kernel já está instalado, mas uname ainda informa o kernel antigo. Você precisa das duas alterações em execução. Qual plano é adequado?
  1. Atualizar as listas do APT, ignorar a instalação, reiniciar e verificar apenas uname
  2. Executar apt upgrade com -y, reiniciar o aplicativo e não reiniciar a máquina
  3. Remover a trava de pacotes, instalar novamente com dpkg e verificar apenas arquivos
  4. Revisar full-upgrade, aplicá-lo, reiniciar a máquina e verificar as duas versões
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Em um sistema RPM, /usr/bin/scan está ausente. Você quer descobrir qual pacote do repositório fornece esse caminho exato. Qual consulta é adequada?
  1. rpm -qf /usr/bin/scan
  2. rpm -ql /usr/bin/scan
  3. dnf provides /usr/bin/scan
  4. dnf history info /usr/bin/scan
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um serviço em execução está desabilitado, mas é ativado repetidamente por seu socket depois que você o para. A política exige bloquear futuras inicializações do serviço e pará-lo agora. Qual ação é adequada?
  1. Mascarar o serviço e pará-lo
  2. Habilitar o serviço sem --now
  3. Desabilitar o serviço uma segunda vez
  4. Desmascarar o serviço e recarregá-lo
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Em um arquivo de unidade, o que After=network.target estabelece por si só?
  1. Um requisito para iniciar esse alvo
  2. Uma relação de ordenação com esse alvo
  3. Uma garantia de conectividade com a internet
  4. Um link de habilitação para futuras inicializações
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um programa desapareceu durante a inicialização anterior. Seu próprio log termina sem erro, e o diário persistente mantém essa inicialização. Onde você deve verificar se houve um encerramento por OOM do kernel?
  1. sudo journalctl -k -b -1
  2. sudo dmesg -w
  3. sudo journalctl -k -b
  4. sudo tail -f /var/log/apt/history.log
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

O nginx não consegue associar-se à porta 8080. Uma consulta identifica um segundo serviço escutando nessa porta, que o sistema deve manter. Ambos os serviços precisam funcionar. Qual direção de reparo decorre disso?
  1. Desabilitar permanentemente o segundo serviço e verificar apenas o nginx
  2. Encerrar o PID do segundo serviço sempre que o systemd o reiniciar
  3. Alterar uma configuração de escuta, testá-la e verificar ambos os serviços
  4. Limpar o diário e tentar o nginx novamente com a mesma configuração
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um arquivo tar lista bundle/a.txt e bundle/b.txt. Você quer restaurar apenas b.txt. Qual nome de item deve solicitar?
  1. b.txt
  2. /bundle/b.txt
  3. archive.tar.gz/b.txt
  4. bundle/b.txt
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Planejar e verificar reparos completos no Linux10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma investigação de memória precisa dos cinco processos que mais usam memória e de seus processos pais. Qual comando fornece um cabeçalho e cinco linhas de dados?
  1. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 6
  2. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 6
  3. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 5
  4. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 5
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Você encontra uma tarefa de cópia não gerenciada no estado D aguardando armazenamento indisponível, um processo filho zumbi do seu aplicativo e um processo de trabalho do systemd que reinicia após ser encerrado. Qual plano trata as três condições?
  1. Repetir KILL na espera pelo armazenamento; enviar KILL ao zumbi; continuar encerrando o PID do processo de trabalho
  2. Retomar a espera pelo armazenamento com CONT; coletar o zumbi com KILL; apenas desabilitar o processo de trabalho
  3. Investigar o armazenamento; inspecionar o processo pai do zumbi; parar o processo de trabalho pelo systemd
  4. Aumentar todas as prioridades; reiniciar o zumbi; mascarar o processo de trabalho sem pará-lo
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Duas de suas tarefas limitadas pela CPU competem entre si. Uma tem nice 0 e a outra nice 15. Qual tem a menor prioridade de escalonamento de CPU?
  1. A tarefa com nice 0
  2. Ambas têm prioridade idêntica
  3. Aquela com o menor PID
  4. A tarefa com nice 15
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um software precisa de ARM de 64 bits, 6 CPUs disponíveis e 8 GB de RAM utilizável. Um host informa aarch64, um soquete com quatro núcleos e duas threads por núcleo, nproc 4 e 7,6 GiB de RAM utilizável. Quais requisitos são atendidos?
  1. Arquitetura e CPUs são atendidos; a RAM utilizável não é.
  2. Arquitetura e RAM são atendidos; a quantidade de CPUs disponíveis não é.
  3. Todos são atendidos porque oito threads de hardware superam seis.
  4. Apenas a RAM é atendida porque aarch64 não é arm64.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O rótulo de uma unidade informa 1 TB e uma listagem em unidades binárias mostra cerca de 931 GiB. O que explica a diferença?
  1. A capacidade que falta deve estar toda alocada à área de troca.
  2. O rótulo usa bytes decimais e a listagem usa unidades binárias.
  3. A listagem contou threads de hardware em vez de blocos de disco.
  4. A unidade pode recuperar a diferença carregando um novo driver.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um colega diz que instalar uma biblioteca Python com pip significa que o apt a listará como um pacote Debian instalado. Por que esse raciocínio está errado?
  1. Pip altera apenas módulos do kernel, não bibliotecas Python.
  2. APT registra bibliotecas apenas após cada reinicialização do sistema.
  3. APT lista todo arquivo baixado como um pacote instalado.
  4. Pip e apt mantêm registros de instalação separados.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um serviço desabilitado está ativo, e seu socket está habilitado. Como esse estado pode ocorrer?
  1. O serviço deve estar habilitado secretamente porque está ativo.
  2. Desabilitado significa que sua saída de estado não é mais confiável.
  3. O socket pode ativá-lo sem links de habilitação do serviço.
  4. Um serviço desabilitado só pode funcionar após uma atualização do kernel.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

O nginx ainda está atendendo requisições. Você editou diretamente o ExecStart de sua unidade para um novo caminho válido de programa e também editou as configurações do nginx; nginx -t agora encontra um erro de sintaxe. Qual sequência aplica as duas alterações pretendidas com uma configuração testada?
  1. Corrigir as configurações do nginx, passar no teste, executar daemon-reload, reiniciar e verificar
  2. Executar daemon-reload primeiro, recarregar o nginx imediatamente e manter o processo antigo
  3. Reiniciar imediatamente e usar enable para restaurar a configuração anterior
  4. Corrigir as configurações do nginx, passar no teste e recarregar apenas o aplicativo
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

No Ubuntu, ocorreram falhas de login SSH das 10:00 às 10:30 de 2026-10-20 durante a inicialização anterior à atual. O diário mantém essa inicialização. Qual comando seleciona esses registros de serviço sem excluir mensagens informativas de login?
  1. sudo journalctl -u ssh -b --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  2. sudo journalctl -u ssh -b -1 -p err --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  3. sudo journalctl -k -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  4. sudo journalctl -u ssh -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Você deve transferir um diretório entre máquinas Linux, manter os metadados de proprietário e grupo para uma restauração como root e confirmar que a transferência preservou os bytes. Qual plano é adequado?
  1. Compactar cada arquivo com gzip, comparar apenas nomes e remover a árvore de origem
  2. Criar um arquivo tar.gz, comparar valores SHA-256 e testar uma restauração
  3. Renomear o diretório com sufixo .zip e comparar a quantidade total de arquivos
  4. Criar um arquivo tar.gz, verificar seu sufixo e presumir que todos os arquivos chegaram
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

78 Termos-Chave, cada um com sua definição

Á

Área de troca (swap)
A área de troca é o armazenamento usado para páginas de memória movidas para fora da RAM, oferecendo capacidade extra com acesso mais lento que o da memória física.
O uso crescente da área de troca junto com pouca RAM disponível sugere que a carga de trabalho precisa de atenção.

A

Alvo do systemd (target)
Um alvo do systemd agrupa unidades em um estado nomeado do sistema, como uma área de trabalho gráfica ou um ambiente multiusuário sem interface gráfica.
Definir multi-user.target como padrão altera a seleção de futuras inicializações sem fechar a área de trabalho atual.
Arquitetura do processador
Uma arquitetura do processador identifica a família de código de máquina executada por um sistema, como x86_64 ou aarch64, afetando a compatibilidade de pacotes.
Um pacote ARM não se torna compatível com um servidor x86 apenas porque ambos usam Linux.
Arquivo de armazenamento
Um arquivo de armazenamento agrupa vários arquivos e diretórios em um objeto, preservando os nomes armazenados dos itens e metadados de arquivo selecionados.
Um arquivo tar pode preservar uma árvore de diretórios Linux enquanto um compactador reduz seu tamanho separadamente.
Arquivo de configuração complementar (drop-in)
Um arquivo de configuração complementar complementa uma definição de unidade com configurações locais, permitindo que as alterações do administrador permaneçam separadas dos arquivos fornecidos por pacotes.
Uma configuração Restart armazenada em um arquivo complementar local pode ser preservada quando a unidade do fornecedor é substituída durante uma atualização.
Arquivo de dispositivo
Um arquivo de dispositivo é um arquivo especial, geralmente em /dev, pelo qual o software acessa um dispositivo representado pelo kernel.
O nome de partição NVMe /dev/nvme0n1p2 identifica uma partição, não um diretório de arquivos.
Arquivo de unidade
Um arquivo de unidade é uma definição em texto de uma unidade do systemd, organizada em seções e configurações para execução, dependências e instalação.
Systemctl cat mostra o arquivo de unidade base do serviço e quaisquer arquivos locais de configuração substitutiva com seus caminhos.
Atualização da lista de pacotes
Uma atualização da lista de pacotes baixa informações atuais dos repositórios para que o gerenciador saiba quais versões estão disponíveis sem instalá-las.
Após um apt update, um aplicativo mais recente pode aparecer como disponível enquanto o antigo permanece instalado.
Atualização de versão
Uma atualização de versão substitui software instalado por uma versão mais recente selecionada do pacote, sujeita às regras de dependências do gerenciador de pacotes.
Instalar uma atualização de kernel deixa o kernel antigo em execução até que a máquina seja inicializada com o novo.

B

Buffer circular
Um buffer circular é um armazenamento de tamanho fixo que substitui suas entradas mais antigas por novas à medida que enche, como o usado para mensagens do kernel.
O buffer atual do kernel pode perder mensagens antigas de detecção mesmo enquanto o diário persistente mantém cópias.

C

Carga média
A carga média é a contagem média de tarefas prontas para executar e tarefas em espera ininterruptível, informada para 1, 5 e 15 minutos.
Uma carga alta com baixa atividade de CPU pode direcionar sua investigação para tarefas bloqueadas pelo armazenamento.
Código de saída
Um código de saída descreve como um programa ou uma etapa de inicialização terminou, ajudando a distinguir um erro do aplicativo de uma falha ao iniciá-lo.
Um resultado 203/EXEC direciona você aos requisitos de execução antes de pesquisar as próprias mensagens de inicialização do aplicativo.
Compactação
A compactação codifica dados em menos bytes quando seu conteúdo permite, usando processamento e às vezes memória em troca de menor espaço de armazenamento.
Logs de texto muitas vezes diminuem muito mais que imagens JPEG porque as imagens já estão compactadas.
Conflito de porta
Um conflito de porta ocorre quando um serviço não consegue ocupar o endereço e a porta de escuta solicitados porque um programa de escuta incompatível já os utiliza.
Identifique o programa que já está escutando antes de decidir se deve pará-lo ou alterar a configuração de um serviço.
Consulta do pacote ao qual um arquivo pertence
Uma consulta do pacote ao qual um arquivo pertence encontra o pacote instalado que forneceu um caminho indicado, usando o banco de dados de pacotes em vez de presumir pelo nome do comando.
Use rpm -qf para um executável instalado cujo nome de pacote você não conhece em um sistema RPM.
CPU lógica
Uma CPU lógica é uma unidade de processamento apresentada para escalonamento; várias CPUs lógicas podem compartilhar um núcleo físico por meio de threads de hardware.
Seis núcleos com duas threads cada apresentam 12 CPUs lógicas, embora ainda existam seis núcleos.

D

Dependência
Uma dependência é outro pacote de que um software precisa para funcionar, como uma biblioteca compartilhada usada por seu executável.
Instalar um aplicativo pequeno também pode instalar várias bibliotecas que satisfazem suas dependências.
Diário de registros do systemd (journal)
O diário de registros do systemd armazena registros indexados coletados do kernel, da inicialização e de programas, com campos como horário, unidade e prioridade.
Use journalctl para ler arquivos do diário em vez de abrir seu conteúdo binário com um leitor de arquivos de texto.
Diário de registros persistente
Um diário de registros persistente mantém registros em disco em /var/log/journal, permitindo consultar inicializações anteriores até que a retenção os remova.
Uma investigação do kernel de uma inicialização anterior precisa de registros preservados, não apenas do buffer atual do kernel.
Diário de registros volátil
Um diário de registros volátil mantém registros em /run/log/journal, de modo que eles são perdidos no desligamento em vez de serem levados para a próxima inicialização.
Após uma reinicialização, um diário volátil não pode fornecer o histórico de erros de serviço da inicialização anterior.
Dispositivo de blocos
Um dispositivo de blocos é um dispositivo acessado por meio de blocos de armazenamento endereçáveis, como um disco ou uma partição representada em /dev.
A árvore do lsblk coloca uma partição abaixo do disco cujo armazenamento ela divide em regiões separadas.
Driver de dispositivo
Um driver de dispositivo é um software que permite ao kernel se comunicar com um dispositivo; a detecção em um barramento, por si só, não demonstra que há um driver funcional.
Um adaptador PCI sem linha de driver em uso precisa de mais investigação antes de poder atender ao tráfego.

E

Estado de atividade
O estado de atividade de um serviço descreve sua condição atual, como em execução, inativo, com falha ou uma tarefa concluída considerada ativa.
Um serviço habilitado pode ter um estado de atividade de falha após seu aplicativo rejeitar uma configuração.
ExecStart
ExecStart é a configuração de serviço que especifica um programa a executar, usando um caminho absoluto de executável ou um nome simples de executável.
Um comando que começa com ./worker tem um caminho relativo com barra e não é uma forma válida de executável.
Extração
A extração restaura itens de um arquivo de armazenamento para o sistema de arquivos, resolvendo seus caminhos armazenados dentro do diretório de destino selecionado.
Restaure em um diretório vazio ao verificar um arquivo de armazenamento desconhecido para que arquivos existentes não sejam sobrescritos.

G

gzip
Gzip é um formato e uma ferramenta de compactação de arquivos individuais, usados com frequência para logs e arquivos tar, combinando amplo suporte com boa velocidade.
Gzip -k mantém um log descompactado enquanto cria uma cópia .gz para armazenamento ou transferência.

H

Habilitação
A habilitação é a configuração por meio de links que organiza a ativação automática de unidades, geralmente como parte de um alvo de inicialização.
Um serviço desabilitado ainda pode estar em execução porque foi iniciado manualmente ou ativado por um socket.

I

Identificador de processo (PID)
Um PID é o identificador numérico que identifica um processo ativo; o kernel pode reutilizar esse número após o término do processo.
Antes de enviar um sinal ao PID 6051, verifique se ele ainda identifica o comando pretendido.
Identificador do processo pai (PPID)
Um PPID é o identificador do processo pai, que identifica o processo que iniciou outro e o relaciona à sua família de processos.
O PPID ao lado de um comando de terminal geralmente corresponde ao PID do shell que o iniciou.
Identificador universalmente único (UUID)
Um UUID é um identificador único informado para recursos como sistemas de arquivos, ajudando a distingui-los além dos nomes de dispositivo que podem mudar.
Compare o modelo, a capacidade e o UUID do sistema de arquivos de um disco quando sua letra sd tiver mudado desde ontem.
Item do arquivo de armazenamento
Um item do arquivo de armazenamento é uma entrada de arquivo ou diretório armazenada, identificada por seu caminho dentro do arquivo de armazenamento, que pode diferir de seu caminho original.
A extração de um único arquivo precisa do nome do item mostrado na listagem, incluindo qualquer prefixo de diretório.

L

Limite de frequência de inicialização
Um limite de frequência de inicialização restringe tentativas repetidas de iniciar um serviço dentro de um período configurado, impedindo que ciclos de falhas rápidas tentem novamente sem fim.
Corrija o erro inicial antes de limpar os contadores de limite com reset-failed e testar uma nova inicialização.
Limpeza de arquivos antigos do diário de registros
A limpeza de arquivos antigos do diário de registros remove arquivos inativos antigos para aplicar limites de retenção selecionados, sem alterar os arquivos ativos do diário.
O uso total de disco pode permanecer acima de um limite de tamanho da limpeza porque arquivos ativos contam no relatório de uso.
Log do kernel
O log do kernel registra eventos do kernel do sistema operacional, incluindo detecção de hardware, erros de drivers e ações por falta de memória.
Se um processo desaparecer silenciosamente, verifique as mensagens do kernel em busca de um encerramento por OOM antes de presumir um erro no aplicativo.

M

Mascaramento
Um mascaramento do systemd bloqueia novas inicializações de uma unidade, geralmente por meio de um link para /dev/null, incluindo inicializações manuais e por dependência.
Um serviço mascarado que já estava em execução precisa de uma solicitação de parada separada se tiver que deixar de funcionar.
Mecanismo de encerramento por falta de memória (OOM killer)
O mecanismo de encerramento por falta de memória é um mecanismo do kernel que encerra um processo selecionado quando o esgotamento da memória exige liberar capacidade.
Um registro de OOM pode explicar por que um aplicativo desapareceu sem gravar um erro próprio.
Memória disponível
Memória disponível é uma estimativa da RAM que novas tarefas podem usar sem recorrer à área de troca, incluindo capacidade recuperada dos caches.
Quando a RAM free estiver baixa, leia a coluna available antes de decidir que o servidor precisa de mais memória.
MemTotal
MemTotal é a RAM física utilizável informada pelo kernel em /proc/meminfo, excluindo a memória reservada antes do uso comum.
Os módulos instalados podem somar 16 GiB mesmo quando MemTotal informa uma quantidade utilizável um pouco menor.
Metadados de arquivo
Os metadados de arquivo descrevem propriedades como proprietário, grupo, modos de permissão e registros de data e hora, que o tar registra junto com o conteúdo dos arquivos.
Uma restauração como root pode aplicar os proprietários registrados, enquanto uma restauração como usuário comum normalmente cria arquivos pertencentes a esse usuário.
Metadados do pacote
Os metadados do pacote descrevem a identidade e os requisitos de um pacote, ajudando ferramentas a selecionar, instalar e consultar software compatível.
Os campos de arquitetura e dependências ajudam um gerenciador de repositórios a planejar a transação de instalação.
Módulo do kernel
Um módulo do kernel é uma parte do código do kernel que pode ser carregada em um kernel em execução, muitas vezes para fornecer suporte a hardware.
A lista de módulos mostra o código carregado; uma listagem de dispositivos ajuda a estabelecer qual driver está realmente associado.

N

Núcleo físico
Um núcleo físico é um núcleo de execução de hardware de um processador, que pode apresentar mais de uma CPU lógica por meio de multithreading simultâneo.
Conte os soquetes e os núcleos por soquete antes de informar a quantidade de núcleos físicos de um servidor.
Número da tarefa
Um número da tarefa é um identificador local ao shell usado para selecionar uma tarefa, distinto do identificador de processo válido em todo o sistema exibido ao lado dele.
Em [2] 7164, fg %2 seleciona a tarefa; 7164 identifica seu processo no nível do sistema operacional.

P

Pacote
Um pacote reúne arquivos de software com metadados de instalação, incluindo versão, arquitetura, requisitos de dependências e registros dos arquivos pertencentes ao pacote.
Um pacote pode colocar um executável, documentação e arquivos de configuração em diretórios diferentes.
Política de reinício
A política de reinício de um serviço determina quais encerramentos de processo causam tentativas automáticas de recuperação, sujeitas a limites e solicitações explícitas de parada.
On-failure pode reiniciar após uma falha, enquanto um systemctl stop intencional mantém o serviço parado.
Prioridade
Uma prioridade do diário identifica a gravidade de uma mensagem, numerada de 0 para emergência a 7 para depuração, com números menores indicando maior gravidade.
Um limite err mantém erros e entradas mais graves enquanto oculta mensagens informativas que ainda poderiam ajudar.
Processo
Um processo é uma instância de um programa em execução, com identidade, memória e recursos próprios gerenciados pelo sistema operacional.
Dois comandos sleep separados criam dois processos, embora executem o mesmo programa.
Processo zumbi
Um processo zumbi é um processo que terminou e cujo processo pai não coletou seu código de saída, deixando uma pequena entrada na tabela de processos marcada como Z.
Entradas zumbis repetidas com o mesmo processo pai sugerem que ele não está coletando os códigos de saída dos processos filhos.

R

Recarregamento
O recarregamento de um serviço solicita que um aplicativo compatível releia sua própria configuração sem um ciclo completo de parada e inicialização.
Teste a configuração editada do nginx antes de solicitar o recarregamento para encontrar erros antes de aplicá-la.
Recarregamento das definições de unidades
O recarregamento das definições de unidades faz o systemd reler suas definições de unidade, sem recarregar o aplicativo ou reiniciar todos os serviços por si só.
Após alterar diretamente o comando de uma unidade, recarregue as definições e reinicie esse serviço para usar o novo comando.
Reinício
O reinício de um serviço para e depois inicia a tarefa gerenciada, permitindo que novas configurações ou código de programa substituído entrem em vigor.
Reiniciar um serviço funcional com uma configuração inválida pode deixá-lo parado após a falha da nova inicialização.
Remoção completa de pacote e configuração (purge)
Uma remoção completa de pacote e configuração é uma operação de remoção do APT que também exclui a configuração de sistema gerenciada de um pacote, sem alterar os dados nos diretórios pessoais dos usuários.
Escolha purge quando as configurações de sistema mantidas também devam ser removidas, após decidir quais configurações preservar.
Remoção de dependências não utilizadas (autoremove)
A remoção de dependências não utilizadas remove pacotes de dependências instalados automaticamente que não são mais necessários ao conjunto de pacotes instalados, após uma revisão da transação.
Uma biblioteca adicionada para um aplicativo pode se tornar elegível para autoremove quando esse aplicativo é removido.
Repositório
Um repositório oferece arquivos de pacote e índices que descrevem software, versões e requisitos disponíveis para um gerenciador de pacotes.
Atualizar as informações do repositório permite que o apt compare versões instaladas com candidatas mais recentes disponíveis.
Rotação de logs
A rotação de logs limita o crescimento de logs de texto iniciando novos arquivos, renomeando e muitas vezes compactando arquivos antigos e removendo registros expirados.
Um login malsucedido da semana passada pode estar em um arquivo rotacionado compactado em vez do log de autenticação de hoje.

S

Serviço
Um serviço é uma tarefa gerenciada em segundo plano que fornece uma função, como um servidor web ou daemon SSH, geralmente sem terminal.
Um serviço pode continuar atendendo requisições após o administrador fechar o terminal usado para iniciá-lo.
SIGKILL
SIGKILL é um sinal de encerramento que não pode ser capturado e força um processo a terminar sem executar a limpeza normal do aplicativo.
Use um encerramento forçado somente após confirmar que o processo ativo pretendido não respondeu a TERM.
SIGSTOP
SIGSTOP é um sinal que não pode ser capturado e para a execução de um processo, mantendo intactos sua identidade, memória e outros recursos.
Um processo de teste parado continua visível no ps e pode continuar quando recebe SIGCONT.
SIGTERM
SIGTERM é o sinal de encerramento padrão usado por kill, que solicita uma saída que um programa pode tratar por meio de código de limpeza.
Um editor pode responder a SIGTERM fechando arquivos antes de terminar, se seu código oferecer suporte a esse tratamento.
Sinal
Um sinal é uma notificação entregue a um processo, solicitando uma ação como encerramento, pausa, continuação ou tratamento específico do aplicativo.
Enviar um sinal nem sempre é uma solicitação de encerramento: SIGCONT retoma uma tarefa que foi parada.
Soma de verificação (checksum)
Uma soma de verificação é um valor calculado a partir dos bytes de um arquivo que pode ser comparado entre cópias para detectar se seus conteúdos correspondem.
Compare os valores SHA-256 após transferir um arquivo de armazenamento e verifique separadamente se ele contém os arquivos desejados.
Syslog
Syslog é uma interface de registro do sistema e um formato de mensagens, muitas vezes tratado por um serviço como rsyslog que grava logs de texto configurados.
Uma instalação baseada no diário pode não ter arquivos de texto do syslog mesmo que seus serviços continuem registrando eventos.
systemd
systemd é um sistema de inicialização e gerenciador de serviços que geralmente é executado como PID 1, ativando e supervisionando unidades em todo o sistema.
O systemd pode reiniciar um serviço com falha conforme a política de sua unidade e registrar sua saída no diário.

T

Tabela de firmware
Uma tabela de firmware registra informações de hardware fornecidas pelo firmware da máquina, que ferramentas como dmidecode podem ler.
Um relatório de slots de memória do dmidecode pode identificar o tamanho e o tipo registrados para cada módulo.
Tamanho do conjunto residente (RSS)
RSS é o tamanho do conjunto residente, a quantidade de memória de um processo atualmente mantida na RAM física, geralmente exibida em kibibytes pelo ps.
Uma alocação virtual grande com RSS pequeno não significa necessariamente que o processo ocupe essa quantidade de RAM.
Tarefa em primeiro plano
Uma tarefa em primeiro plano é uma tarefa gerenciada pelo shell que controla o terminal no momento, enquanto o shell espera que ela termine ou pare.
Após fg %2, atalhos de teclado como Ctrl+C atuam sobre a tarefa agora em primeiro plano.
Tarefa em segundo plano
Uma tarefa em segundo plano é uma tarefa gerenciada pelo shell que é executada sem ocupar o primeiro plano, permitindo que o shell aceite mais comandos.
Um relatório em segundo plano pode continuar escrevendo no prompt, a menos que sua saída tenha sido redirecionada.
Tempo de espera por entrada e saída (I/O wait)
O tempo de espera por entrada e saída é o tempo ocioso da CPU contabilizado enquanto operações de entrada e saída estão pendentes, exibido como wa no top e útil na investigação de atrasos de armazenamento.
Um wa alto e pouco trabalho de CPU por programas de usuário tornam uma verificação do armazenamento mais útil do que alterar valores nice.
Teste de configuração
Um teste de configuração verifica as configurações propostas de um aplicativo antes de serem aplicadas, muitas vezes identificando erros de sintaxe por arquivo e linha.
Um nginx -t bem-sucedido após uma correção dá motivo para prosseguir com o recarregamento ou reinício planejado.
Transação de pacotes
Uma transação de pacotes é uma operação registrada de instalação, remoção ou atualização envolvendo um ou mais pacotes e suas alterações.
Inspecione os detalhes de uma transação do DNF para ver qual biblioteca mudou pouco antes de um serviço começar a falhar.
Trava do gerenciador de pacotes
Uma trava do gerenciador de pacotes coordena o acesso aos registros de pacotes para que processos simultâneos de instalação ou manutenção não gravem alterações conflitantes.
Um atualizador automático pode manter a trava enquanto você espera para começar uma instalação interativa.

U

Unidade
Uma unidade é um objeto gerenciado pelo systemd, descrito por uma definição de serviço, socket, alvo, montagem ou outro recurso.
O sufixo em nginx.service identifica a unidade como serviço, e não como socket ou alvo.

V

Valor nice
Um valor nice ajusta a prioridade normal de escalonamento de CPU, e valores maiores dão às tarefas concorrentes mais oportunidade de execução.
Um backup com nice 15 pode ceder tempo de CPU a tarefas interativas e ainda usar totalmente uma CPU ociosa.
Verificação de assinatura
A verificação de assinatura confere dados autenticados com uma chave de assinatura confiável, dando suporte à cadeia de confiança no fornecedor de um sistema de pacotes.
A ausência de uma chave autêntica de repositório deve ser corrigida sem desativar a verificação de autenticação.
Versão candidata
Uma versão candidata é a versão de pacote que o APT selecionaria no momento para instalação ou atualização segundo sua política configurada.
Uma candidata pode mudar após a atualização das listas de repositórios, mesmo que os arquivos instalados permaneçam iguais.
Versão instalada
Uma versão instalada é a versão de pacote registrada como instalada localmente, distinta de uma versão apenas disponível em um repositório.
Uma consulta de política pode mostrar a versão instalada 2,4 e a candidata 2,6 antes de qualquer atualização ter sido aplicada.

X

xz
Xz é um formato e uma ferramenta de compactação que frequentemente produz arquivos menores que o gzip, exigindo mais tempo e memória para compactar.
Um arquivo de armazenamento de texto destinado a um download em que o tamanho importa pode justificar o custo adicional de processamento do xz.

Z

ZIP
ZIP é um formato de arquivo de armazenamento que combina o agrupamento de arquivos com compactação e tem amplo suporte para compartilhamento entre sistemas operacionais de computadores pessoais.
Use zip -r para empacotar um diretório e seu conteúdo para colegas que usam Windows ou macOS.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar