Caderno operacional — observar uma execução
Este laboratório transforma conceitos de CPU, memória, processo, caminho e persistência em observações feitas no próprio computador. Um programa Python imprime PID, sistema e diretório atual, grava um arquivo e permanece ativo para inspeção. O leitor executa a experiência em diretórios diferentes, confirma quais estados sobrevivem ao encerramento e provoca falhas seguras de caminho e conteúdo. Cada etapa exige previsão, comando, observação e explicação, evitando o hábito de reiniciar ou elevar privilégios sem diagnóstico. O resultado é um relatório reproduzível que distingue programa, processo, memória e armazenamento e transfere essas conclusões para uma integração de manutenção com ERP.
Caderno operacional — observar uma execução
Situação concreta
Um importador de ordens funciona quando o desenvolvedor o inicia, mas falha como tarefa agendada com “arquivo não encontrado”. Em vez de reinstalar ou executar como administrador, você vai construir uma miniatura segura desse problema e provar a causa. O laboratório usa arquivos fictícios e não precisa de ERP, contêiner ou acesso privilegiado.
Pré-requisitos, objetivos e materiais
Leia Do silício ao processo. Tenha Python 3, terminal e editor. No Windows, você usará Get-Process; em Linux/macOS, ps. Crie uma pasta vazia chamada laboratorio-execucao.
Você entregará observar.py, o arquivo gerado e relatorio.md. O relatório deve permitir que outra pessoa repita cada etapa.
Vocabulário operacional
- Diretório atual é a pasta usada como ponto inicial para caminhos relativos.
- Caminho absoluto identifica um local desde a raiz.
- Handle ou descritor é a referência do processo a um recurso aberto.
- Código de saída é um número devolvido ao encerrar; zero normalmente indica sucesso.
- CPU-bound descreve trabalho limitado por cálculo.
- I/O-bound descreve trabalho limitado por espera de entrada/saída.
- JSON, JavaScript Object Notation, é um formato textual estruturado para trocar e armazenar dados.
Modelo mental e limite
Ler o fluxo em texto
- 1. Prever o resultado
- 2. Executar o programa
- 3. Observar processo e arquivo
- 4. Encerrar e comparar estados
- 5. Provocar uma falha segura
- 6. Registrar causa e correção
O laboratório mostra uma execução local. Em produção, agendadores, contêineres e serviços adicionam usuário, variáveis, volumes e limites. Não generalize tempos ou consumo medidos aqui para um servidor; transfira o método de observação.
Antes e agora
Um diagnóstico informal dizia “aqui funciona” e enviava uma captura de tela. Um diagnóstico reproduzível registra versão, diretório, comando, entrada, horário, saída e código de encerramento. Hoje, ambientes efêmeros tornam essa disciplina ainda mais importante: a instância pode desaparecer e levar evidências locais. IA pode explicar mensagens, mas precisa receber evidência sanitizada e não substitui a reprodução.
Passo 1 — crie o programa, bloco a bloco
Crie observar.py. O primeiro bloco identifica o processo:
from datetime import datetime, timezone
from pathlib import Path
import json
import os
import platform
import sys
saida = Path("estado") / "execucao.json"
print("PID:", os.getpid())
print("SO:", platform.system())
print("Python:", sys.version.split()[0])
print("Diretório atual:", Path.cwd())
print("Destino absoluto:", saida.resolve())Cada valor responde a uma pergunta. PID localiza o processo; versão ajuda reprodução; diretório explica caminhos relativos; destino mostra onde o arquivo será criado.
O segundo bloco grava estado persistente:
saida.parent.mkdir(parents=True, exist_ok=True)
registro = {
"pid_que_gravou": os.getpid(),
"instante_utc": datetime.now(timezone.utc).isoformat(),
"status": "laboratorio",
}
with saida.open("w", encoding="utf-8") as arquivo:
json.dump(registro, arquivo, ensure_ascii=False, indent=2)
print("Tamanho:", saida.stat().st_size, "bytes")
input("Processo ativo. Pressione Enter para encerrar...")mkdir cria a pasta. with garante fechamento. UTC evita confundir fusos. O arquivo contém somente dados fictícios.
Passo 2 — execute, encontre e encerre
No terminal, dentro de laboratorio-execucao, execute:
python observar.pyAntes de pressionar Enter, copie o PID. Em outro PowerShell:
Get-Process -Id 1234 | Select-Object Id, ProcessName, CPU, WorkingSet64Substitua 1234. Em Linux/macOS, use:
ps -p 1234 -o pid,comm,%cpu,rssRegistre o comando e a saída. WorkingSet64 ou rss aproximam memória residente, mas uma única medição não demonstra vazamento. Volte ao programa e pressione Enter. Execute novamente o comando de processo: o PID não deve mais existir. Abra estado/execucao.json: o arquivo persiste. Escreva a distinção em suas palavras.
Passo 3 — mude o diretório de trabalho
Crie uma pasta vizinha chamada outra-pasta. A partir dela, execute o programa usando o caminho até o script, por exemplo:
python ../laboratorio-execucao/observar.pyNo Windows, ajuste barras se necessário. Antes de executar, preveja o destino. Observe que estado nasce no diretório atual, não ao lado do script. Isso reproduz a causa comum de tarefas agendadas: o agendador inicia em outra pasta.
Uma correção possível é construir o caminho a partir do script:
base = Path(__file__).resolve().parent
saida = base / "estado" / "execucao.json"Outra é configurar explicitamente o diretório no agendador. Escolha de acordo com o contrato: arquivo pertence à aplicação ou ao ambiente de execução?
Passo 4 — provoque falha de conteúdo
Depois que o programa encerrar, substitua o conteúdo do JSON por {invalido. Acrescente temporariamente:
with saida.open(encoding="utf-8") as arquivo:
print(json.load(arquivo))Execute e registre a exceção. O arquivo existe e a permissão pode estar correta; a falha pertence ao formato. Isso impede o diagnóstico vago “problema de arquivo”. Restaure o conteúdo válido depois.
Falha, diagnóstico e correção mínima
Para cada falha, preencha:
| Campo | Pergunta |
|---|---|
| Sintoma | O que foi observado literalmente? |
| Esperado | Qual resultado estava definido? |
| Evidência | PID, caminho, comando e mensagem sustentam o quê? |
| Hipótese | Qual causa explica todos os fatos? |
| Experimento | Que mudança distingue essa causa das alternativas? |
| Correção | Qual é a menor alteração adequada? |
Não use “rodar como administrador” como correção de caminho ou formato. Elevar privilégio pode esconder uma permissão incorreta e ampliar impacto de um defeito.
Aplicação em manutenção/ERP
Um importador real pode ler arquivo exportado pelo ERP. Defina pasta de entrada, formato, codificação, limite, usuário executor, destino após sucesso e quarentena após falha. Grave um identificador de lote para impedir duplicação numa repetição. Se a aplicação roda em contêiner, confirme que a pasta é um volume persistente; o sistema de arquivos interno pode desaparecer.
O relatório deste laboratório vira uma pergunta operacional: “com qual usuário, diretório e configuração o job foi iniciado?”. Ela é mais útil que “por que no meu computador funciona?”.
Segurança e privacidade
Use somente registros fictícios. Não cole variáveis de ambiente, argumentos completos ou conteúdo do ERP no relatório. PIDs não são segredos duráveis, mas comandos podem conter tokens. Restrinja a pasta do laboratório ao usuário necessário e remova-a ao final se houver dados reais — neste exercício, não haverá.
Não provoque disco cheio, esgotamento de memória ou laços infinitos na máquina de trabalho. Falhas de capacidade exigem ambiente descartável e limites; ficam fora deste laboratório introdutório.
Exercício guiado
Acrescente ao registro um contador iniciado em zero e incrementado a cada execução, lendo o arquivo anterior se existir. Antes de codificar, responda: onde o contador vive? O que acontece se duas instâncias escreverem simultaneamente? O exercício mostra que persistência não garante consistência. Para produção, banco, transação ou lock apropriado seria necessário.
Desafio e evidência de competência
Entregue relatorio.md com:
- ambiente e versão;
- duas previsões feitas antes da execução;
- comandos e resultados;
- processo visível enquanto ativo e ausente após encerrar;
- arquivo presente após encerrar;
- comparação dos dois diretórios;
- falha de JSON e diagnóstico;
- recomendação para o job do ERP.
Critérios de aceite:
- outra pessoa reproduz sem perguntar caminhos ocultos;
- PID, diretório atual e destino absoluto estão registrados;
- o texto distingue memória, processo e arquivo;
- ao menos uma hipótese alternativa foi descartada;
- nenhum dado sensível aparece;
- a correção não amplia privilégios.
Conclusão
Você observou um programa tornar-se processo, persistir bytes e desaparecer da memória. Também provou que caminho depende do diretório atual e que “arquivo existe” não implica “conteúdo válido”. Esse pequeno repertório sustenta diagnósticos de jobs, APIs e contêineres. A competência demonstrada está no relatório reproduzível, não na quantidade de comandos executados.
Fontes oficiais
- Python —
os: PID e interfaces do sistema operacional. - Python —
pathlib: caminhos e operações de arquivo. - Microsoft PowerShell —
Get-Process: inspeção oficial de processos no Windows.
Comprove o que você aprendeu
Responda todas as questões. O gabarito comentado só aparece depois do envio.