Swap - Nutzung untersuchen und anzeigen

Hinweis: In dem Thema Swap - Nutzung untersuchen und anzeigen gibt es 25 Antworten auf 3 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Codekritik


    Da der Shebang die bash als Interpreter benennt, sollte man auch bash Syntax verwenden.
    Die POSIX Syntax ist schwerer lesbar, außerdem sind viele bash Konstrukte wesentlich leistungsfähiger.


    Das export LANG="en_US.UTF-8" ist eher hinderlich.
    Es ist nicht garantiert, dass diese Locale installiert ist.
    Besser ist ein LANG=C, was garantiert auch auf japanischen Maschinen problemlos funktionieren wird.


    Überflüssig ist die Zeile export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin, da das sowieso Standard ist.
    Will man das als Systemtool schreiben, so nimmt man schlicht absolute Pfade.


    Man sollte keine Variablen in all uppercase verwenden.
    Das sind per Konvention System Environment Variablen.
    Diese Unsitte hält sich seit Anbegin der Shellprogrammierung hartnäckig.
    Allzu leicht überschreibt man dabei auch tatsächliche Systemenvrionmentvariablen.
    Um sowas zu vermeiden, verwende man für eigene Variablen Kleinbuchstaben und Unterstriche, wie man unter Bashisten übereingekommen ist, oder CamelCase.
    Das hier ist einfach schlechter Stil: SUM=0; OVERALL=0


    for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; Hier ist die Posixsyntax mit den Backticks zu bemängeln. Sehr viel leichter ist die Bashsyntax $( someCommand ) zu lesen.
    Die Pipe zu grep ist überflüssig, da find selbst Reguläre Ausdrücke beherrscht.
    Ein find -maxdepth 1 -type d -a -name '[0-9]*' tut das Gleiche, ohne den Overhead von Pipe und weiterem Grep-Prozess.
    Nicht berücksichtigt sind dabei übrigens Verzeichnisse, bei denen nach den Zahlen noch Buchstaben kommen würden. Mag zur Zeit belanglos sein, aber dennoch erwähnenswert.


    Dann kommt diese Zeile: PID=`echo $DIR | cut -d / -f 3`
    Du schneidest aus dem Pfadnamen das Ende (also die Pid) heraus, indem du die Pfadnamen durchläufst und jeden zu cut pipest.
    Ganz ohne Kontextwechsel und Pipe kann das die Bash selbst mit ParameterExpansion wesentlich schneller:

    Code
    for d in /proc/[0-9]*; do 
        printf "%-9s %s\n"  pid=${d##*/} path=$d; 
    done


    Später folgt dann diese Zeile: for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'
    Aus jedem Verzeichnis liest du die Datei "smaps", greppst daraus die Zeilen, die das Wort "Swap" enthalten und lässt wieder nach einer Pipe awk das zweite Datenfeld ausgeben.
    All das kann man mit einem einzigen awk- Befehl für ALLE Verzeichnisse erledigen:

    Code
    awk '/swap/{print $2}'  /proc/[0-9]*/smaps

    Diese Lösung verwendet nur awk und das Globbing der Bash.


    Man könnte das ganze Script, also auch das Aufsummieren des Swaps, das Herausschneiden der Pids und das Finden der gesamten Kommandozeile des jeweiligen Prozesses komplett in einem kleinen awk Scriptchen erledigen.


    Das wäre erheblich viel schneller und würde auf viel Ressourcenverschwendung durch überflüssige Kontextwechsel, Piperei und dergleichen verzichten.
    Was im Ernstfall für so ein Script nicht unerheblich wäre, wie einige Vorposter ja schon schrieben.

    Für den Inhalt des Beitrages 82336 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Linupia
    Sag mal, gehts noch? Erzähl das dem Programmierer des Script. Der wird sich sicher dafür interessieren. Es wurde hier nicht gefragt, ob das Script so richtig gecodet ist oder nicht. Es wurde nur erwähnt, das es existiert und was es macht.

  • Sollte man nicht in einem Hilfeforum andere vor immer wiederholten Fehlern bewahren?
    Ich denke schon.


    Schreibe das Script um, dann lernst du was.
    Im übrigen hast du dich im Header als Autor bezeichnet.


    Wir wollen doch alle keine schlechten Scripte.
    Solche Beispiele sollte man immer kritisieren.
    Genau solche fragwürdigen Scripte schreiben die Fehler fort.


    Und dein Argument hinkt. Es wurde auch nicht nach einem solchen Script gefragt.
    Wer ungefragt Quatsch postet, sollte mit Kritik umgehen können.

    Für den Inhalt des Beitrages 82352 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Was hab ich mich? Als Autor bezeichnet? Was nimmst du für Tabletten? In welcher Passage steht das?


    Ein gewisser Andreas Laub oder ein Erik Ljungstrom hat mit mir rein gar nix zu tun!

  • Dann entschuldige bitte diese bösartige Unterstellung.
    Ich hatte dich denen gleichgesetzt, da du dieses fragwürdige Scriptchen so hoch lobtest.

    Für den Inhalt des Beitrages 82355 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Wenn du so ein Gscheiterle bist, steht es dir frei den Autor anzuschreiben und ihm zu helfen, Scripte zu schreiben. Er wird sicher über deine Meinung begeistert sein. Die Mailadresse steht im Script. Des weiteren hatte ich lediglich erwähnt dass das Teil tut was es soll. Und wenn du so schlau bist, warum meldest du dich nicht bei Microsoft? Vielleicht wird dann mal noch ein Betriebssystem aus dem Teil.

  • Erstaunliche Kritikfähigkeit für einen "Meister".
    Werde erwachsen.

    Für den Inhalt des Beitrages 82358 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Erstaunliche verbale Kommunikation deinerseits. Was anderes fällt dir nicht ein? War ja lange Ruhe in dem Forum. Wird Zeit das mal wieder bissel Stunk hier rein kommt. Bist ja auch schon lange hier.
    Und jetzt darfst du zum Schluß noch einen gescheiten Beitrag absondern, für mich ist an der Stelle Schluß mit der Diskussion.

  • ich bin zu unerfahren/alt und schon zu dement, um das skript zu verstehen. Allerdings verstehe ich - zum Teil - das was Linupia dazu schreibt und finde es gut, dass man sachlich zu solchen Dingen (aus Skripten) Stellung nimmt.


    Es wurde ja auch nicht die Funktionsfähigkeit bemängelt sondern .. na ja .. sondern eine gewisse Schludigkeit und potentielle Fehlerquellen.


    Allerdings sollte man mit Kritik etwas vorsichtig sein an Beiträgen die freiwillig und unbezahlt geleistet werden.


    Das ist so wie mit ehrenamtlichem Vereinsvorstand/fürstlich honoriertem Konzernvorstand.


    Kritik im ersteren und unserem Fall bitte freundlich und konstruktiv. Vielleicht mit einem kleinen ReWrite des Skriptes!! Im 2. Fall wird der Betroffene ja für sein Leiden bezahlt - dann darf man sich mehr erlauben.


    Manchmal denke ich auch hier bei einigen Tipps: was für ein Murks .. aber .. in vielen Fällen krieg ich es ja auch nicht hin ..

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 82362 haftet ausdrücklich der jeweilige Autor: wurzel99

  • OK.


    Ich werde dieses Scriptchen nach meinem Vermögen neu schreiben,
    samt extensiven Erklärungen.

    Für den Inhalt des Beitrages 82365 haftet ausdrücklich der jeweilige Autor: LinuPia