1. 29.08.2010

    Mitt oppsett

    Ich werde immer wieder mal danach gefragt, was ich für ein Programm für diesen oder jenen Zweck verwende. Dazu habe ich hier auf der Webseite mal mein Setup hinterlegt. Vielleicht interessiert es ja den ein oder anderen, ansonsten ist es sicherlich auch eine Art Backup für mich, falls ich mal in die angenehme Gelegenheit komme, einen neu erstandenen Mac einzurichten :-)

    Viel Spaß beim stöbern. Für Empfehlungen bin ich übrigens immer offen und ich werde die Liste regelmäßig aktualisieren.

  2. Kommentare
  3. 26.08.2010

    Arbeitsspeicher und Anzahl von Prozessen einfach visualisieren

    Um schnell in der Bash einen Überblick über die Verwendung von Arbeitsspeicher eines Prozesses bzw. einer Gruppe von Prozessen und deren Anzahl zu bekommen, bediene ich mich gerne eines Einzeilers der mir durch Farben dieses darstellt. Der Vorteil dabei ist, dass man diesen Prozess auch im Hintergrund laufen lassen kann und man mit einem kurzen flüchtigen Blick sieht, ob es sich zum negativen oder positiven verändert.

    Die zu untersuchenden Prozesse werden dabei in der Umgebungsvariablen TESTCASE definiert, wobei hier einfach die Parameter des “ps” Befehls Verwendung finden. Im Grund brauche ich nur zwei Varianten:

    • -u USERNAME
    • -C PROZESSNAME

    Man kann die Parameter natürlich auch kombinieren. Als Ausgabe bekommt man dann eine einfache Liste, die je nach Änderung des Wertes (grün = Verbesserung, rot = Verschlechterung, weiß = keine Änderung) sich einfärbt.

    Die Spalten haben folgende Bedeutung:

    1. Timestamp
    2. Freier Arbeitsspeicher des Systems
    3. Verwendeter Swapspeicher
    4. Speicherverbrauch der Prozesse (RSS)
    5. Anzahl der Prozesse

    Das folgende Beispiel zeigt die Beobachtung eines Apache httpd auf einem Ubuntu Server:

    export TESTCASE="-u www-data";while true; do datum=`date +%T`; export memfree=`cat /proc/meminfo | grep "MemFree" | awk '{print $2;}'`; export swapfree=`cat /proc/swaps | grep -v "Used" | awk '{SUM += $4;} END {print SUM}'`; echo -n "$datum "; awk 'BEGIN{if (ENVIRON["memfree"]<ENVIRON["memfree_old"]) {printf "\033[31;40m" ENVIRON["memfree"] "\033[37;40m "} else if (ENVIRON["memfree"]>ENVIRON["memfree_old"]) {printf "\033[32;40m" ENVIRON["memfree"] "\033[37;40m "} else {printf ENVIRON["memfree"] " "}}'; export memfree_old=$memfree; awk 'BEGIN{if (ENVIRON["swapfree"]<ENVIRON["swapfree_old"]) {printf "\033[;31;40m" ENVIRON["swapfree"] "\033[37;40m "} else if (ENVIRON["swapfree"]>ENVIRON["swapfree_old"]) {printf "\033[32;40m" ENVIRON["swapfree"] "\033[37;40m "} else {printf ENVIRON["swapfree"] " "}}'; export swapfree_old=$swapfree; export usage=`ps $TESTCASE -o size | grep -v SZ | awk '{ SUM += $1;} END { print SUM }'`; awk 'BEGIN{if (ENVIRON["usage"]>ENVIRON["usage_old"]) {printf "\033[31;40m" ENVIRON["usage"] "\033[37;40m "} else if (ENVIRON["usage"]<ENVIRON["usage_old"]) {printf "\033[32;40m" ENVIRON["usage"] "\033[37;40m "} else {printf ENVIRON["usage"] " "}}'; export usage_old=$usage; export processes=`ps $TESTCASE -o size | grep -v SZ | awk '{ SUM += 1;} END { print SUM }'`; awk 'BEGIN{if (ENVIRON["processes"]>ENVIRON["processes_old"]) {printf "\033[31;40m" ENVIRON["processes"] "\033[37;40m "} else if (ENVIRON["processes"]<ENVIRON["processes_old"]) {printf "\033[32;40m" ENVIRON["processes"] "\033[37;40m "} else {printf ENVIRON["processes"] " "}}'; export processes_old=$processes; echo ""; sleep 5; done

    Je nach Bedarf kann man den Befehl natürlich beliebig verändern und erweitern. So verwende ich zum Beispiel bei Servern, die Apache, Tomcat und MySQL auf einem Server laufen lassen, eine erweiterte Version, in der ich auch noch den Speicherverbrauch jedes einzelnen Programms gleichzeitig ausgebe. Warum ich den Einzeiler nicht in ein übersichtliches Skript packe hat einen ganz einfachen Grund: So kann ich durch Copy&Paste das ganze sehr schnell auf einem anderen System ausführen.

    Noch eine Anmerkung zum hier ausgegebenen Wert RSS der Prozesse: Ja, dieser Wert zeigt nicht genau den Speicherverbrauch an. Aber in den meisten Fällen reicht dieser Wert vollkommen aus.

  4. Kommentare

« Previous Next »