1 Punkte von GN⁺ 2024-07-30 | 1 Kommentare | Auf WhatsApp teilen

ps aux in Bash implementieren

  • Interviewfrage: Für ein Interview zu einer Position, die Kenntnisse in Bash/Linux erfordert, kann man folgende Situation annehmen

    • Man ist per SSH auf einer Maschine eingeloggt und verwendet eine Bash-Shell, kann aber keine neuen Prozesse erzeugen
    • Es wird gefragt, was man tun würde, wenn alle PIDs belegt sind
  • Lösung: Mit diesem Tool kann man sich so verhalten, als stünde der Befehl ps aux zur Verfügung

    • Es funktioniert nicht in jeder Situation zu 100 %, verhält sich aber ähnlich

Zusammenfassung von GN⁺

  • Dieser Artikel zeigt eine Möglichkeit, den Befehl ps aux zu ersetzen, wenn in einer Bash-Shell keine neuen Prozesse erzeugt werden können
  • Er erklärt, wie man mit einem Bash-Skript Systemprozesse überprüfen kann
  • Die Methode funktioniert nicht in jeder Situation perfekt, kann aber in eingeschränkten Umgebungen nützlich sein
  • Andere Tools mit ähnlicher Funktion sind htop oder der Befehl top

1 Kommentare

 
GN⁺ 2024-07-30
Hacker-News-Kommentare
  • Das schwierigste Problem in der Informatik ist die Ausrichtung von Spalten

    • Selbst Funktionen, die einfach aussehen, brauchen in der Praxis sehr lange
    • Eine Funktion zur Spaltenausrichtung in verschiedenen Programmiersprachen zu schreiben, ist immer schwierig
    • Selbst mit den f-strings- und Padding-Funktionen von Python entsteht komplexer und schwer lesbarer Code
    • Auch beim Schreiben des Beispielcodes mussten mehrere Bugs behoben werden
  • Beispiel für eine Interviewfrage, die Wissen zu bash/Linux voraussetzt

    • Es wird gefragt, wie man das Problem löst, wenn keine neuen Prozesse erzeugt werden können, weil alle PIDs bereits in Benutzung sind
    • Im Dateisystem /proc/[pid]/ wird geprüft, welche Prozesse den PID-Raum verbrauchen
    • kill ist ein eingebauter bash-Befehl und kann verwendet werden, ohne einen neuen Prozess zu erzeugen
    • Man kann den Elternprozess finden und stoppen, um das Problem zu lösen
    • Es ist möglich, ein sauberes Skript zu schreiben, das keine Pipes oder Subshells erzeugt
  • Interviewerfahrung für eine SRE-Rolle bei einem großen US-Technologieunternehmen im Jahr 2011

    • Es war ein Unternehmen, das eine browserbasierte Online-Alternative zu MS Office entwickelte
    • Nach dem Telefoninterview wurde die Aufgabe gegeben, in bash ein Ersatzprogramm für netstat zu schreiben
    • Damals wusste man nicht, wie man Socket-Informationen in /proc/ findet, daher wurden Ersatzprogramme für ps und fuser geschrieben
    • Der Interviewer akzeptierte das, und danach ging es zu einem Vor-Ort-Interview weiter
    • Es besteht Neugier, ob dieses Szenario auf realen Anforderungen basiert
  • Izabera aus bash@libera ist einer der bash-Experten

    • In den letzten 10 Jahren wurde viel gelernt
  • Beispiel für sauberen bash-Code

    • Der meiste bash-Code ist ineffizient, aber dieser ist ein gutes Beispiel
  • Es wird gefragt, wie man das Problem löst, wenn keine neuen Prozesse erzeugt werden können, weil alle PIDs bereits in Benutzung sind

    • In einer POSIX-Shell ist das bash-Skript nicht kompatibel
  • Funktioniert nicht in bash 3.2, aber in bash 4.2

    • Im Beispielcode tritt ein Fehler bei den Formatangaben von printf auf
  • Vorschlag für einen besseren Anwendungsfall zum Auflisten von Prozessen auf Systemen, auf denen procps nicht installiert ist

  • Man kann auch Listener und Clients in bash schreiben, aber in der Praxis wird das nicht empfohlen