1 points par GN⁺ 2024-07-30 | 1 commentaires | Partager sur WhatsApp

Implémenter ps aux en bash

  • Question d’entretien : pour un poste nécessitant des connaissances en bash/Linux, on peut imaginer une situation comme celle-ci

    • Vous utilisez un shell bash sur une machine accessible en SSH, mais il est impossible de créer de nouveaux processus
    • Une question peut consister à demander quoi faire lorsque tous les PID sont utilisés
  • Solution : cet outil permet de se comporter comme si la commande ps aux était disponible

    • Cela ne fonctionne pas à 100 % dans tous les cas, mais le comportement est similaire

Résumé de GN⁺

  • Cet article présente une méthode pour remplacer la commande ps aux lorsqu’il est impossible de créer de nouveaux processus dans un shell bash
  • Il explique comment vérifier les processus système à l’aide d’un script bash
  • Cette méthode peut ne pas fonctionner parfaitement dans tous les cas, mais elle peut être utile dans un environnement contraint
  • D’autres outils offrant des fonctions similaires incluent htop et la commande top

1 commentaires

 
GN⁺ 2024-07-30
Commentaire Hacker News
  • Le problème le plus difficile en informatique, c’est l’alignement

    • Même les fonctions qui paraissent simples prennent en réalité beaucoup de temps
    • Écrire une fonction d’alignement en colonnes dans plusieurs langages de programmation est toujours difficile
    • Même avec les f-strings de Python et les fonctions de padding, on obtient un code complexe et difficile à lire
    • Il a même fallu corriger plusieurs bugs pendant l’écriture du code d’exemple
  • Exemple de question d’entretien demandant des connaissances sur bash/Linux

    • On demande comment résoudre le problème lorsqu’il est impossible de créer un nouveau processus parce que tous les PID sont utilisés
    • On vérifie dans le système de fichiers /proc/[pid]/ quels processus consomment l’espace des PID
    • kill est une commande intégrée de bash, donc on peut l’utiliser sans créer de nouveau processus
    • Trouver puis arrêter le processus parent peut résoudre le problème
    • Il est possible d’écrire un script propre sans créer de pipe ni de sous-shell
  • Expérience d’un entretien en 2011 pour un poste de SRE dans une grande entreprise technologique américaine

    • C’était une entreprise qui développait une alternative en ligne, basée sur le navigateur, à MS Office
    • Après l’entretien téléphonique, on lui a donné comme exercice d’écrire en bash un programme remplaçant netstat
    • À l’époque, il ne savait pas comment trouver les informations de sockets dans /proc/, donc il a écrit des remplaçants pour ps et fuser
    • L’intervieweur l’a accepté, puis le processus a continué avec un entretien sur site
    • Il se demande si ce scénario était fondé sur une situation réelle
  • Izabera de bash@libera fait partie des experts de bash

    • Il a beaucoup appris au cours des dix dernières années
  • Exemple de code bash propre

    • La plupart du code bash est inefficace, mais celui-ci est un bon exemple
  • Une autre question demande comment résoudre le problème lorsqu’il est impossible de créer un nouveau processus parce que tous les PID sont utilisés

    • Le script bash n’est pas compatible avec un shell POSIX
  • Cela ne fonctionne pas avec bash 3.2, mais fonctionne avec bash 4.2

    • Une erreur de caractère de format dans printf se produit dans le code d’exemple
  • Suggestion d’un meilleur cas d’usage pour lister les processus sur un système où procps n’est pas installé

  • On peut aussi écrire un listener et un client en bash, mais ce n’est pas recommandé en pratique