1 puntos por GN⁺ 2024-07-30 | 1 comentarios | Compartir por WhatsApp

Implementar ps aux en bash

  • Pregunta de entrevista: como pregunta de entrevista para un puesto que requiere conocimientos de bash/Linux, se puede plantear una situación como la siguiente

    • Se está usando el shell de bash en una máquina conectada por SSH, pero no es posible crear nuevos procesos
    • También se puede preguntar qué hacer si todos los PID están en uso
  • Solución: esta herramienta permite comportarse como si se pudiera usar el comando ps aux

    • No funciona al 100% en todos los casos, pero se comporta de forma similar

Resumen de GN⁺

  • Este artículo presenta una forma de sustituir el comando ps aux en situaciones donde no se pueden crear nuevos procesos desde el shell de bash
  • Explica cómo revisar los procesos del sistema mediante un script de bash
  • Este método puede no funcionar perfectamente en todos los casos, pero puede ser útil en entornos restringidos
  • Otras herramientas con funcionalidad similar incluyen los comandos htop y top

1 comentarios

 
GN⁺ 2024-07-30
Comentarios de Hacker News
  • El problema más difícil en ciencias de la computación es el trabajo de ordenar columnas

    • Incluso una función que parece simple en realidad toma mucho tiempo
    • Escribir una función de alineación de columnas en varios lenguajes de programación siempre es difícil
    • Incluso usando f-strings y funciones de padding de Python, el código se vuelve complejo y difícil de leer
    • Incluso mientras escribía el código de ejemplo, tuve que corregir varios errores
  • Ejemplo de pregunta de entrevista que requiere conocimientos de bash/Linux

    • Una pregunta sobre cómo resolver la situación cuando no se puede crear un proceso nuevo porque todos los PID están en uso
    • Se revisan los procesos que consumen el espacio de PID en el sistema de archivos /proc/[pid]/
    • kill es un comando integrado de bash, así que puede usarse sin crear un proceso nuevo
    • Se puede resolver el problema encontrando y deteniendo el proceso padre
    • Es posible escribir un script limpio que no cree pipes ni subshells
  • Experiencia de una entrevista para un puesto de SRE en una gran empresa tecnológica de Estados Unidos en 2011

    • Era una empresa que desarrollaba una alternativa en línea basada en navegador a MS Office
    • Después de una entrevista telefónica, le asignaron la tarea de escribir un reemplazo de netstat en bash
    • En ese momento no sabía cómo encontrar información de sockets en /proc/, así que escribió reemplazos de ps y fuser
    • El entrevistador lo aceptó y luego pasó a una entrevista presencial
    • Se pregunta si este escenario estaba basado en una situación real
  • Izabera de bash@libera es una de las personas expertas en bash

    • Ha aprendido mucho durante los últimos 10 años
  • Ejemplo de código bash limpio

    • La mayor parte del código bash es ineficiente, pero este es un buen ejemplo
  • Una pregunta sobre cómo resolver la situación cuando no se puede crear un proceso nuevo porque todos los PID están en uso

    • El script de bash no es compatible con shells POSIX
  • No funciona en bash 3.2, pero sí en bash 4.2

    • En el código de ejemplo aparece un error en el especificador de formato de printf
  • Sugerencia de un mejor caso de uso para listar procesos en sistemas donde procps no está instalado

  • También se pueden escribir un listener y un cliente en bash, pero en la práctica no se recomienda