Sistemas Operacionais com GNU/Linux e Python

Identificação do sistema e da distribuição, comandos de data/calendário/armazenamento/memória, monitoramento de recursos, navegação, inspeção e manipulação de arquivos, ajuda e documentação, pipelines/redirecionamentos, expansões e aspas, e um mini-fluxo final.

Por Fábio Linhares • Instituto Infnet

Quem conseguir resolver, de ponta a ponta, os 12 exercícios a seguir não terá apenas “executado comandos”. Terá desenvolvido um conjunto de competências operacionais típicas de quem trabalha com Linux no mundo real: coletar evidências, interpretar saídas, agir com segurança e documentar o que foi feito de forma reproduzível.

O primeiro desafio é lidar com a fricção natural do terminal: nomes de arquivos, caminhos, permissões, diferenças entre distribuições e comandos que são interativos (como less e man). O segundo é mental: sair do modo “tentar até dar certo” e entrar no modo operador — hipótese → evidência → decisão → validação. Esse ciclo aparece em tudo: identificar o sistema, medir recursos, depurar um erro de permissão, ou entender por que um comando que funcionava ontem hoje “quebrou”.

Ao final, se você conseguiu entregar todos os arquivos pedidos e consegue justificar o que fez, você demonstrou domínio prático de:

Em termos de “qualidades” profissionais, o pacote que você ganha aqui é um trio valioso: autonomia (resolver sem depender de receita), precisão (evitar erros por contexto/sintaxe) e método (provar que está certo em vez de só torcer). É isso que separa quem “sabe Linux” de quem opera Linux.

Uma história de colaboração e código aberto

O nascimento do sistema que hoje chamamos de GNU/Linux é um exemplo notável de colaboração entre comunidades e indivíduos apaixonados por tecnologia. Em 1983, Richard Stallman iniciou o Projeto GNU com o objetivo de criar um sistema operacional completamente livre, oferecendo alternativas para ferramentas essenciais como compiladores, editores e shells. Essa iniciativa foi pioneira ao estabelecer a filosofia do software livre, permitindo que qualquer pessoa pudesse usar, estudar, modificar e redistribuir o código-fonte dos programas. Enquanto isso, na Finlândia, Linus Torvalds, então estudante de ciência da computação, estava insatisfeito com os sistemas operacionais disponíveis para PCs. Em 1991, ele começou a desenvolver um novo kernel, o núcleo do sistema operacional, que mais tarde seria conhecido como Linux. Torvalds utilizou ferramentas do Projeto GNU, como o compilador GCC, para escrever e compilar o código do kernel, além de utilizar o Bash como shell para interagir com o sistema. O primeiro lançamento público do kernel Linux ocorreu em 1991, e logo se tornou evidente que, para que fosse funcional, ele precisaria ser combinado com as ferramentas do Projeto GNU. Assim, nasceu o sistema operacional GNU/Linux, uma fusão do kernel Linux com as ferramentas e bibliotecas desenvolvidas pelo Projeto GNU. Essa colaboração resultou em um sistema operacional completo, estável e livre, que se espalhou rapidamente entre desenvolvedores e entusiastas de tecnologia. É importante destacar que, embora o nome "Linux" seja amplamente utilizado para se referir ao sistema como um todo, ele tecnicamente se refere apenas ao kernel. O termo "GNU/Linux" reconhece as contribuições do Projeto GNU e de Stallman, que foram essenciais para a criação do sistema operacional livre que conhecemos hoje. Ao compreender essa história, você não apenas aprende sobre a origem do sistema operacional, mas também sobre os valores que fundamentam o software livre: liberdade, colaboração e compartilhamento de conhecimento. Essa base ética e técnica é fundamental para entender o ecossistema de software atual e a importância de contribuir para ele de forma aberta e responsável.
Mapa de desafios e competências
ETAPA 01
Identidade e contexto do sistema
Você aprende a “perguntar ao sistema” quem ele é: distribuição, kernel, arquitetura e características gerais.
  • Coleta de evidências via /etc/os-release, uname e afins
  • Registro em arquivo e comunicação técnica mínima
Você consegue descrever o ambiente com precisão (base para qualquer diagnóstico).
ETAPA 02
Observabilidade de recursos
Você consolida o “painel de instrumentos” do Linux: tempo/data, espaço em disco, memória e CPU.
  • Interpretação de saídas de comandos de sistema
  • Organização de evidências por categoria (CPU/memória/disco)
Você distingue sintomas (lento/sem espaço) de causas prováveis (CPU/IO/memória).
ETAPA 03
Filesystem na prática
Navegar e manipular arquivos é o “arroz e feijão” de quem trabalha com Linux, e também onde mais gente se perde.
  • Movimentação segura por diretórios
  • Inspeção (tipo e conteúdo) sem “quebrar” nada
  • Criação/cópia/remoção com contexto e evidência
Você trabalha com caminhos e arquivos com confiança e baixo risco operacional.
ETAPA 04
Poder do shell e autonomia
Aqui você vira “alfabetizado” no shell: consulta documentação, cria alias, usa pipelines, expansões e aspas corretamente.
  • Documentação local como primeira fonte de verdade
  • Redirecionamento e pipelines para compor comandos
  • Expansões e quoting para lidar com padrões, espaços e variáveis
  • Fluxo final integrando tudo, com documentação completa
Você automatiza com segurança e documenta como operador profissional.

EXERCÍCIO 1 — Papel do sistema operacional Linux em sistemas computacionais

Este exercício te obriga a responder uma pergunta simples, mas poderosa: “Que sistema eu estou operando agora?”. Em sistemas reais (laboratórios, servidores, containers, WSL), você frequentemente não pode confiar em “achismos” ou em uma interface gráfica. Você precisa provar, com evidências coletadas via terminal, qual é o sistema, versão e arquitetura — e registrar isso de modo auditável.

Passo a passo (com evidência)

  1. Identificar nome e versão do sistema: leia /etc/os-release (fonte mais padrão para distros modernas).
  2. Confirmar que é um sistema “Unix-like”: use uname (e explique a família: Linux segue a filosofia Unix).
  3. Identificar arquitetura (32/64 bits): use uname -m ou getconf LONG_BIT.
  4. Registrar tudo no arquivo sistema_linux.txt.
$ cat /etc/os-release
NAME="Ubuntu" VERSION="22.04.3 LTS (Jammy Jellyfish)" ID=ubuntu ...
$ uname -s
Linux
$ uname -r
5.15.90.1-microsoft-standard-WSL2
$ uname -m
x86_64
$ getconf LONG_BIT
64
Dica operacional:
/etc/os-release fala da distribuição. uname fala do kernel. Um operador bom sabe separar essas camadas.

Como criar e preencher o arquivo

$ nano sistema_linux.txt
# Conteúdo sugerido: Nome do sistema operacional: Ubuntu Tipo: Unix-like (kernel Linux) Versão da distribuição: 22.04.3 LTS Versão do kernel: 5.15.90.1-microsoft-standard-WSL2 Arquitetura: x86_64 (64-bit)
$ cat sistema_linux.txt
(confira o conteúdo)
Regra anti-alucinação operacional:
Não invente a saída. Registre o que o seu sistema realmente mostrou.

EXERCÍCIO 2 — Distribuições Linux e contextos de uso

Aqui a meta é diferenciar kernel Linux de distribuição. Distribuições são “pacotes de escolhas”: gerenciador de pacotes, ciclo de atualização, padrões de configuração, foco (desktop, servidor, container). Você precisa: (1) identificar qual distro está rodando e (2) relacionar distros a contextos típicos de uso.

Passo a passo

  1. Identifique nome e versão da distro via /etc/os-release ou lsb_release -a (se existir).
  2. Crie distribuicoes.txt e registre os dados.
  3. Cite duas outras distribuições e associe cada uma a um contexto típico de uso.
$ cat /etc/os-release | head
NAME="Ubuntu" VERSION="22.04.3 LTS (Jammy Jellyfish)" ID=ubuntu
$ lsb_release -a
Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy
Exemplos de associação (consenso do mercado):
  • Ubuntu: desenvolvimento e servidores (LTS muito usada em produção).
  • Debian: servidores estáveis e base de várias distros (inclui o próprio Ubuntu).
  • Alpine: containers (minimalista, comum em imagens Docker).
  • Arch Linux: desktop/power users, rolling release (ótimo para aprender, exige manutenção).

Exemplo de conteúdo para distribuicoes.txt

$ nano distribuicoes.txt
Distribuição atual: Ubuntu Versão: 22.04.3 LTS Outras distribuições: 1) Debian — contexto típico: servidores estáveis / base para produção. 2) Alpine — contexto típico: containers e imagens minimalistas.
Modelo mental:
Kernel (Linux) = motor.
Distribuição = motor + carroceria + manual + oficinas (pacotes e políticas).

EXERCÍCIO 3 — Comandos básicos e interpretação de saída

Este exercício treina a execução e o registro de comandos básicos, além de uma competência silenciosa e valiosa: saber capturar saída em arquivo de forma reprodutível. Você vai rodar: date, cal, df, free e sair do terminal com exit.

Como registrar a saída no arquivo

Você tem duas formas “limpas”:

  1. Rodar um comando por vez e redirecionar: bom para marcar seções.
  2. Usar um bloco com chaves: captura tudo de uma vez, com cabeçalhos.
$ { echo "=== date ==="; date; echo; echo "=== cal ==="; cal; echo; echo "=== df -h ==="; df -h; echo; echo "=== free -h ==="; free -h; } > comandos_basicos.txt
(arquivo criado: comandos_basicos.txt)
$ cat comandos_basicos.txt
=== date === Mon Feb 16 14:30:11 UTC 2026 February 2026 Su Mo Tu We Th Fr Sa ... === df -h === Filesystem Size Used Avail Use% Mounted on ... Swap: 2.0Gi 0B 2.0Gi
Interpretação pedida (armazenamento vs memória):
  • df → armazenamento (disco/partições/montagens).
  • free → memória RAM e swap.
Por que -h?
“Human-readable”: troca blocos/KB crus por GiB/MiB. Em produção, isso evita erro bobo de interpretação.
Nota:
O comando exit não gera saída útil para registrar; ele encerra a sessão do shell.

EXERCÍCIO 4 — Coleta de recursos: CPU, memória e disco

Agora você vai além do “rodar comando”: precisa organizar evidência por categoria (CPU, memória, disco). Isso é o esqueleto de qualquer diagnóstico de performance/capacidade: “o gargalo é CPU, IO ou memória?”

Comandos úteis (mínimo robusto)

  • CPU: lscpu (ou cat /proc/cpuinfo).
  • Memória: free -h e opcionalmente vmstat (se existir).
  • Disco: df -h (uso) e lsblk (dispositivos).
$ { echo "===== CPU ====="; lscpu; echo; echo "===== MEMÓRIA ====="; free -h; echo; echo "===== DISCO (uso) ====="; df -h; echo; echo "===== DISCO (dispositivos) ====="; lsblk; } > recursos.txt
(arquivo criado: recursos.txt)
$ head -n 25 recursos.txt
===== CPU ===== Architecture: x86_64 CPU(s): 8 Model name: ... ===== MEMÓRIA ===== total used free shared buff/cache available Mem: ... ===== DISCO (uso) ===== Filesystem Size Used Avail Use% Mounted on ...
Como “identificar claramente” no arquivo:
Use separadores como ===== CPU =====, ===== MEMÓRIA =====, ===== DISCO =====. Isso facilita correção e reuso em troubleshooting real.
Modelo mental (mínimo):
CPU = computação; Memória = “mesa de trabalho”; Disco = “armário”. Sistema lento pode ser “falta de CPU”, “falta de mesa”, ou “armário travado/cheio”.

EXERCÍCIO 5 — Navegação no sistema de arquivos via terminal

Este exercício mede “fluência de deslocamento”: ir até /var/log, confirmar onde está, voltar ao diretório pessoal. Parece trivial… até você errar o contexto e executar algo no lugar errado. A habilidade por trás é: saber sempre onde você está.

Sequência mínima de comandos

  1. Ir para logs: cd /var/log
  2. Confirmar diretório atual: pwd
  3. Voltar ao home: cd ~ (ou apenas cd)
  4. Registrar comandos em navegacao.txt
$ cd /var/log
(sem saída)
$ pwd
/var/log
$ cd ~
(sem saída)
$ pwd
/home/usuario

Como registrar os comandos

Você pode escrever manualmente no arquivo ou capturar o histórico recente:

$ history | tail -n 20 > navegacao.txt
(registra os últimos comandos no arquivo)

Se preferir registrar “bonito”, escreva assim:

$ nano navegacao.txt
cd /var/log pwd cd ~ pwd
Dica:
cd - alterna entre diretórios anteriores. Ótimo para “vai e volta” em troubleshooting.
Regra de ouro:
Antes de comandos que alteram coisas (copiar, remover, editar), rode pwd. Isso salva carreiras.

EXERCÍCIO 6 — Inspeção de arquivos: ls, file e less

Aqui você aprende a inspecionar sem estragar: listar arquivos, identificar tipo e visualizar conteúdo de um arquivo texto/log. A ideia é formar o hábito de olhar antes de mexer.

Dica operacional:
Se você não encontrar 3 arquivos “bem diferentes” no seu diretório pessoal, escolha arquivos do próprio sistema (por exemplo: ~/.bashrc, /bin/ls, /etc/hosts) ou crie rapidamente arquivos de teste:
$ printf "linha1\nlinha2\n" > exemplo.txt
(cria um arquivo texto)
$ touch vazio.dat
(cria um arquivo vazio)
$ head -c 32 /dev/urandom > exemplo.bin
(cria um arquivo binário pequeno)

Passos

  1. Listar arquivos do diretório pessoal: use ls para listar o conteúdo do ~.
  2. Identificar tipo de 3 arquivos: escolha três e rode file em cada um.
  3. Visualizar conteúdo com segurança: use less para abrir um arquivo texto ou log.
  4. Registrar tudo: salve os resultados em visualizacao.txt.
$ ls -lah ~
(total e lista de arquivos do diretório pessoal)
$ file ~/.bashrc ~/.profile /bin/ls
/home/usuario/.bashrc: ASCII text /home/usuario/.profile: ASCII text /bin/ls: ELF 64-bit LSB pie executable, x86-64, ...
$ less ~/.bashrc
(abrirá modo interativo; use q para sair)

Exemplo de visualizacao.txt

$ cat visualizacao.txt
== ls (home) == (listagem do diretório) == file (3 arquivos) == ~/.bashrc: ASCII text /bin/ls: ELF 64-bit ... /etc/hosts: ASCII text == less == Visualizado com less: ~/.bashrc
Boas práticas:
  • file é “verdade do sistema” sobre o tipo do arquivo (não confie só na extensão).
  • less é mais seguro do que cat para arquivos longos (permite navegar sem “jogar tudo” na tela).
  • Se você abrir um arquivo binário por engano no less, saia com q e escolha um arquivo texto/log.

EXERCÍCIO 7 — Manipulação de arquivos e diretórios: mkdir, touch, cp, rm

Este exercício simula operações que você faz todo dia: criar diretório, criar arquivo, copiar e remover. O ponto crítico não é “decorar comandos”, é não cometer erro destrutivo por contexto.

Passos

  1. Criar diretório: mkdir tp_linux
  2. Entrar nele: cd tp_linux
  3. Criar arquivo: touch teste.txt (ou nano teste.txt para adicionar conteúdo)
  4. Copiar: cp teste.txt teste_backup.txt
  5. Remover: rm teste.txt
  6. Registrar comandos em manipulacao.txt
$ mkdir tp_linux
(sem saída)
$ cd tp_linux
(sem saída)
$ echo "teste" > teste.txt
(sem saída)
$ cp teste.txt teste_backup.txt
(sem saída)
$ rm teste.txt
(sem saída)
$ ls -l
-rw-r--r-- 1 usuario usuario 6 Feb 16 14:40 teste_backup.txt

Exemplo de manipulacao.txt

$ nano manipulacao.txt
mkdir tp_linux cd tp_linux echo "teste" > teste.txt cp teste.txt teste_backup.txt rm teste.txt ls -l
Cuidado com rm:
Treine a paranoia saudável: rode pwd e ls antes de remover. Em produção, o erro comum é apagar no diretório errado.
Minhas recomendações pragmáticas:
Use rm -i (interativo) enquanto estiver aprendendo. Isso reduz desastre.

EXERCÍCIO 8 — Ajuda e documentação: type/which/help + man/apropos/info/whatis + alias

Esse exercício é o antídoto contra dependência de tutorial: usar a documentação do próprio sistema. Operador bom consulta a fonte local primeiro — especialmente em servidores sem navegador.

Parte 1 — Investigar o comando ls

  • type ls → diz se é builtin, alias ou binário e de onde vem.
  • which ls → mostra o caminho do executável (quando não é builtin/alias).
  • help ls → funciona se for builtin do shell (em geral, ls não é builtin; então pode falhar ou mostrar algo vazio).
$ type ls
ls is /usr/bin/ls
$ which ls
/usr/bin/ls
$ help ls
bash: help: no help topics match `ls'. (ou saída semelhante)

Parte 2 — Investigar o comando rm

  • man rm → manual completo (fonte principal).
  • apropos rm → procura por termos no índice de man pages.
  • info rm → documentação no sistema Info (quando instalada).
  • whatis rm → resumo curto (1 linha).
$ whatis rm
rm (1) - remove files or directories
$ apropos rm | head
rm (1) - remove files or directories rmdir (1) - remove empty directories ...
$ man rm
(abre modo interativo; use q para sair)
$ info rm
(abre modo interativo; use q para sair)

Parte 3 — Criar um alias simples para ls

Para a sessão atual (não persistente):

$ alias ll='ls -lah'
(sem saída)
$ ll
(lista detalhada do diretório atual)

Para tornar persistente, adicione no seu ~/.bashrc (ou ~/.zshrc):

$ echo "alias ll='ls -lah'" >> ~/.bashrc
(sem saída)
$ source ~/.bashrc
(recarrega configurações)

Registrar tudo em comandos_auxiliares.txt

$ nano comandos_auxiliares.txt
Investigação do comando ls: - type ls: /usr/bin/ls - which ls: /usr/bin/ls - help ls: (não se aplica / sem help) Investigação do comando rm: - whatis rm: remove files or directories - apropos rm: (lista entradas relacionadas) - man rm: consultado (interativo) - info rm: consultado (interativo) Alias criado: alias ll='ls -lah'
Nota sobre rm:
Leia com atenção as opções -r, -f e a combinação -rf. Este é um dos comandos mais perigosos do sistema quando usado sem método.
Consenso operacional:
Man page é “lei local”. Blogs ajudam, mas o manual explica a versão que você realmente tem instalada.

EXERCÍCIO 9 — Pipelines e redirecionamento: listar /etc, paginar, salvar e revisar

Pipelines são a cola do Unix: você combina ferramentas simples para formar um fluxo. Aqui você vai: listar /etc, paginar a saída, salvar em arquivo e revisar com less.

Passos

  1. Listar /etc (recomendo ls -la para mostrar arquivos ocultos).
  2. Paginar com less usando pipeline |.
  3. Salvar a saída em pipeline.txt com redirecionamento >.
  4. Abrir o arquivo no less.
$ ls -la /etc | less
(modo interativo; use q para sair)
$ ls -la /etc > pipeline.txt
(arquivo criado: pipeline.txt)
$ less pipeline.txt
(modo interativo; use q para sair)
Modelo mental:
| conecta stdout do comando A ao stdin do comando B. > redireciona stdout para um arquivo (sobrescreve).
Armadilha comum:
> sobrescreve. Se você quer acrescentar ao final, use >>.
Prática de operador:
Em logs, você raramente usa GUI. less é seu “visualizador padrão” no terminal.

EXERCÍCIO 10 — Shell expansions: curingas e criação múltipla

Shell expansion é o que faz o terminal ser “produtivo”: o shell expande padrões antes de executar o comando. Você vai: listar arquivos .log com curingas e criar múltiplos arquivos de uma vez.

Parte 1 — Listar arquivos .log

Dependendo do sistema, seus logs podem estar em /var/log. Exemplo:

$ ls /var/log/*.log
/var/log/dpkg.log /var/log/alternatives.log ...

Se não existir nenhum .log, o shell pode reclamar. Nesse caso, registre isso no arquivo (faz parte do real).

Parte 2 — Criar múltiplos arquivos

Use expansão de chaves {} (brace expansion):

$ touch arquivo_{1..5}.txt
(cria arquivo_1.txt ... arquivo_5.txt)
$ ls arquivo_*.txt
arquivo_1.txt arquivo_2.txt arquivo_3.txt arquivo_4.txt arquivo_5.txt

Registrar em expansoes.txt

$ nano expansoes.txt
1) Listar logs: ls /var/log/*.log (saída ou observação se não houver) 2) Criar múltiplos arquivos: touch arquivo_{1..5}.txt ls arquivo_*.txt
Expansões que valem ouro:
  • * (coringa)
  • ? (um caractere)
  • {a,b,c} e {1..5} (brace expansion)
  • ~ (home do usuário)
Risco real:
Um rm *.log no diretório errado destrói. Antes de remover com curingas, sempre rode ls *.log para ver o que será afetado.

EXERCÍCIO 11 — Aspas simples vs duplas (quoting) e espaços em nomes

Este exercício treina um dos “erros invisíveis” mais comuns no terminal: quoting. Espaços, variáveis e caracteres especiais mudam completamente o significado do comando. A diferença entre aspas simples e duplas é essencial para não quebrar scripts, pipelines e automações.

Parte 1 — Criar arquivo com espaço no nome

  1. Crie um arquivo com espaço no nome usando aspas (simples ou duplas).
  2. Liste para confirmar.
$ touch "arquivo com espaco.txt"
(sem saída)
$ ls -l
... arquivo com espaco.txt
Alternativa (escape):
Você também pode escapar o espaço: touch arquivo\\ com\\ espaco.txt. Aspas normalmente são mais legíveis.

Parte 2 — Comparar aspas simples e duplas com echo

Regra prática (consenso):

  • Aspas simples (' ') preservam tudo literalmente (não expandem variáveis).
  • Aspas duplas (" ") ainda expandem variáveis e algumas sequências.
$ nome="Linux"
(sem saída)
$ echo 'O nome é $nome'
O nome é $nome
$ echo "O nome é $nome"
O nome é Linux

Registrar em aspas.txt

$ nano aspas.txt
1) Arquivo com espaço: touch "arquivo com espaco.txt" 2) Comparação: nome="Linux" echo 'O nome é $nome' → não expande variável echo "O nome é $nome" → expande variável Observação: aspas simples são literais; aspas duplas permitem expansão.
Erro comum (e caro):
Sem aspas, o shell separa por espaços. Ex.: rm arquivo com espaco.txt vira 3 argumentos e pode apagar coisas que você não pretendia (ou falhar de forma confusa).
Minha recomendação pragmática:
Em scripts, use aspas duplas por padrão para variáveis ("$var") e aspas simples quando você quer literal absoluto (p.ex., regex, strings fixas com $).

EXERCÍCIO 12 — Fluxo final integrando competências

Este exercício amarra tudo: você cria um diretório, inspeciona um arquivo com ls, file e less, consulta a documentação de pelo menos um comando e documenta o processo. O foco é demonstrar método + evidência + registro.

Fluxo sugerido (operacional e reproduzível)

  1. Criar diretório projeto_final e entrar nele.
  2. Criar um arquivo de texto simples para inspecionar (ex.: README.txt).
  3. Inspecionar com ls, file e less.
  4. Usar um comando auxiliar para investigar um comando (ex.: type ls ou man file).
  5. Documentar tudo em projeto_final.txt (comandos + observações + validação).
$ mkdir projeto_final
(sem saída)
$ cd projeto_final
(sem saída)
$ printf "Projeto final — teste de inspeção.\\n" > README.txt
(sem saída)
$ ls -l
-rw-r--r-- 1 usuario usuario 34 Feb 16 15:05 README.txt
$ file README.txt
README.txt: ASCII text
$ less README.txt
(interativo; q para sair)
$ type ls
ls is /usr/bin/ls

Documentação em projeto_final.txt

$ nano projeto_final.txt
1) Setup: mkdir projeto_final cd projeto_final printf "Projeto final — teste de inspeção.\n" > README.txt 2) Inspeção: ls -l → confirmou presença e permissões file README.txt → confirmou tipo (texto) less README.txt → visualização segura (interativa) 3) Comando auxiliar: type ls → confirmou origem do comando 4) Validação: README.txt existe, é texto, foi visualizado com segurança.
Como corrigir se algo der errado:
Se less não abrir, verifique permissões (ls -l). Se o arquivo não existir, revise o diretório atual (pwd). Se file der erro, confira o nome do arquivo e caracteres especiais/aspas.
Fechamento (o que você provou aqui):
Você provou que consegue operar em CLI com método: criar estado, inspecionar evidência, consultar documentação e registrar o processo de forma que outra pessoa possa reproduzir.