1 pontos por GN⁺ 2024-07-30 | 1 comentários | Compartilhar no WhatsApp

Implementando ps aux em bash

  • Pergunta de entrevista: como pergunta de entrevista para uma posição que exige conhecimento de bash/linux, pode-se assumir uma situação como a seguinte

    • Você está usando um shell bash em uma máquina acessada via SSH, mas está em uma situação em que não é possível criar novos processos
    • Uma pergunta pode ser o que fazer se todos os PIDs estiverem em uso
  • Solução: com esta ferramenta, é possível agir como se você pudesse usar o comando ps aux

    • Não funciona 100% em todas as situações, mas se comporta de forma semelhante

Resumo do GN⁺

  • Este artigo apresenta uma forma de substituir o comando ps aux em uma situação em que não é possível criar novos processos no shell bash
  • Explica como verificar os processos do sistema por meio de um script bash
  • Esse método pode não funcionar perfeitamente em todas as situações, mas pode ser útil em ambientes restritos
  • Outras ferramentas com funcionalidade semelhante incluem os comandos htop e top

1 comentários

 
GN⁺ 2024-07-30
Comentários do Hacker News
  • O problema mais difícil da ciência da computação é alinhamento

    • Até funções que parecem simples na verdade levam muito tempo
    • Escrever uma função de alinhamento de colunas em várias linguagens de programação é sempre difícil
    • Mesmo usando f-strings e recursos de padding do Python, o código fica complexo e difícil de ler
    • Foi preciso corrigir vários bugs até durante a escrita do código de exemplo
  • Exemplo de pergunta de entrevista que exige conhecimento de bash/Linux

    • Perguntar como resolver quando não é possível criar um novo processo porque todos os PIDs estão em uso
    • Verificar no sistema de arquivos /proc/[pid]/ quais processos estão consumindo o espaço de PID
    • kill é um comando embutido do bash e pode ser usado sem criar um novo processo
    • Encontrar o processo pai e interrompê-lo pode resolver o problema
    • Dá para escrever um script limpo sem criar pipes nem subshells
  • Experiência em uma entrevista para função de SRE em uma grande empresa de tecnologia dos EUA em 2011

    • Era uma empresa que fazia uma alternativa online baseada no navegador ao MS Office
    • Depois da entrevista por telefone, foi passada a tarefa de escrever em bash um programa substituto para netstat
    • Na época, como não sabia como encontrar informações de socket em /proc/, escreveu substitutos para ps e fuser
    • O entrevistador aceitou isso, e depois o processo seguiu para uma entrevista presencial
    • Fica a dúvida se esse cenário era baseado em uma situação real
  • Izabera, do bash@libera, é uma das pessoas especialistas em bash

    • Aprendi muita coisa ao longo dos últimos 10 anos
  • Exemplo de código bash limpo

    • A maior parte do código bash é ineficiente, mas este é um bom exemplo
  • Pergunta sobre como resolver quando não é possível criar um novo processo porque todos os PIDs estão em uso

    • Em shell POSIX, o script em bash não é compatível
  • Não funciona no bash 3.2, mas funciona no bash 4.2

    • No código de exemplo ocorre um erro no especificador de formato de printf
  • Sugestão de um caso de uso melhor para listar processos em sistemas sem procps instalado

  • Também é possível escrever listeners e clientes em bash, mas na prática isso não é recomendado