Noções Essenciais de Sysadmin
Desenvolvedores Rust que implantam serviços precisam de habilidades básicas de Linux: arquivos, permissões, processos, systemd e logs. Estes comandos depuram hosts de produção e Docker locais igualmente.
Receita
ls -la
chmod 755 /usr/local/bin/my-service
systemctl status my-service
journalctl -u my-service -f --since "10 min ago"
df -h && du -sh target/
ulimit -nQuando usar isso:
- Primeiro deploy para VM ou bare metal
- Permissão negada em binário ou socket
- Serviço em loop de crash após o lançamento
Exemplo de Trabalho
# Cria usuário de serviço e instala binário
sudo useradd -r -s /bin/false myservice
sudo install -o myservice -g myservice -m 755 \
target/release/my-service /usr/local/bin/my-service
sudo systemctl daemon-reload
sudo systemctl enable --now my-service
curl -sf localhost:8080/healthO que isso demonstra:
- Usuário de serviço com privilégio mínimo
- systemd gerencia a política de reinício
- journald captura stdout/stderr do subscriber
tracing
Mergulho Profundo
Modelo de Permissões
| Símbolo | Significado |
|---|---|
rwx usuário/grupo/outros | bits de leitura, escrita, execução |
4 | leitura, 2 escrita, 1 execução |
Binários Rust precisam do bit de execução; arquivos de configuração frequentemente 640 root + grupo de serviço.
Descritores de Arquivo
Serviços Axum de alta concorrência precisam de LimitNOFILE=65535 na unidade systemd.
Armadilhas
- Executando como root - risco de segurança. Correção: usuário dedicado no arquivo de unidade.
- Disco cheio em
target/- builds incrementais falham estranhamente. Correção: monitoredf, limpe artefatos antigos. - Fuso horário incorreto nos logs - confusão UTC vs local. Correção: registre UTC no aplicativo; defina
TZapenas para o shell. - SELinux bloqueando binário - permissão negada em caminhos personalizados. Correção:
audit2whyou contexto documentado. - Limite de taxa do journald - logs de crash ausentes. Correção: ajuste
RateLimitIntervalpara janelas de depuração.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Apenas Docker | Sem SSH em produção | Depurando rede do host |
| Ansible | Configuração repetida de frota | VM local única |
| Kubernetes | Pods orquestrados | Protótipo de VM única |
FAQs
systemd vs supervisord?
systemd é o padrão em Linux moderno; use unidades nativas para daemons Rust.
Para onde vão os logs println?
journald quando stdout está conectado; prefira tracing estruturado de qualquer maneira.
Relacionados
- Gerenciamento de processos e recursos
- Noções básicas de implantação
- Gerenciamento de toolchain e rustup
- Melhores Práticas da CLI do Linux
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.