Benutzer-Werkzeuge

Webseiten-Werkzeuge


adminstoriesprozesse

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

adminstoriesprozesse [20120901 17:10] (aktuell)
Dirk Deimeke angelegt
Zeile 1: Zeile 1:
 +====== Prozesse ======
  
 +  * Urspruenglicher Autor: Dirk Deimeke
 +  * Urspruengliches Datum: 09.09.2011
 +
 +Es ist enorm hilfreich, selbst haeufig genutzte Kommandos gut zu kennen, wie beispielsweise das ''​ps''​-Kommando. Wenn man alle Prozesse sehen moechte, die gerade Dateien auf einen bestimmten Mountpunkt benutzen, hilft das Kommando ''​fuser''​.
 +
 +<code bash>$ fuser -c /srv/fritz
 +/​srv/​fritz: ​         13087c 13561c</​code>​
 +
 +Das obige Kommando listet alle Prozesse, die ''/​srv/​fritz''​ benutzen. Um mehr ueber die Prozesse herauszufinden,​ bitte nicht ''​ps -ef | egrep "​13087|13561"''​ benutzen, stattdessen lieber einen Blick auf die Option ''​-p''​ werfen.
 +
 +<code bash>$ ps -fp 13087 13561
 +UID        PID  PPID  C STIME TTY      STAT   TIME CMD
 +dirk     ​13087 ​ 7786  0 14:30 pts/1    Ss+    0:00 -bash
 +root     13561 13559  0 14:52 pts/2    S+     0:00 -bash</​code>​
 +
 +Wenn man jetzt noch weiss, dass ''​fuser''​ alle Prozess-IDs nach ''​STDOUT''​ und den ganzen restlichen Text nach ''​STDERR''​ schreibt, kann man beides auch in einem Befehl zusammenfassen.
 +
 +<code bash>$ fuser -c /srv/fritz/ | xargs ps -fp
 +/​srv/​fritz/: ​       cc
 +UID        PID  PPID  C STIME TTY      STAT   TIME CMD
 +dirk     ​13087 ​ 7786  0 14:30 pts/1    Ss+    0:00 -bash
 +root     13561 13559  0 14:52 pts/2    S+     0:00 -bash</​code>​
 +
 +Moechte man nun mehr ueber die beiden Prozesse herausfinden,​ lohnt sich ein Blick auf ''​pstree''​ (die Ausgabe von ''​ps -ejH''​ sagt mir nicht so ganz zu).
 +
 +<code bash>$ pstree -alpu | less
 +init,​1 ​  
 +...
 +  |-gdm,6755
 +  |   ​|-gdm-simple-slav,​6757 --display-id /​org/​gnome/​DisplayManager/​Display1
 +  |   ​| ​  ​|-X,​6765 :0 -br -verbose -auth /​var/​run/​gdm/​auth-for-gdm-dovMHi/​database -nolisten tcp vt7
 +  |   ​| ​  ​|-gdm-session-wor,​7442
 +  |   ​| ​  ​| ​  ​|-gnome-session,​7621,​dirk
 +...  ​
 +  |   ​| ​  ​| ​  ​| ​  ​|-gnome-shell,​7694
 +...
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​|-gnome-terminal,​7786
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​|-bash,​7792
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​`-sudo,​13613,​root -i
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​      ​`-bash,​13614
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​          ​|-less,​13733
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​          ​`-pstree,​13732 -alpu
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​|-bash,​13087
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​|-bash,​13514
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​`-sudo,​13559,​root -i
 +  |   ​| ​  ​| ​  ​| ​  ​| ​  ​| ​  ​| ​      ​`-bash,​13561
 +...</​code>​
 +
 +Damit laesst sich rueckverfolgen,​ dass die root-Shell, die den Mountpunkt benutzt, urspruenglich dem User dirk gehoert.
 +
 +Anderes Anwendungsgebiet:​ Herausfinden der Anzahl der Prozesse, die der User des Apache-Servers gerade geoeffnet hat und beenden der Prozesse mit ''​kill -15''​.
 +
 +<code bash>ps -ef | grep -c ^www-data
 +# oder
 +ps -ef | grep ^www-data | wc -l
 +# oder
 +ps -fu www-data | wc -l</​code>​
 +
 +Der letzte Befehl ist der beste, da er nicht alle (zigtausend) Prozesse auf einem System durchsucht, sondern nur die, die dem User www-data gehoeren. Allerdings enthält er noch den Spaltenkopf. Dazu spaeter.
 +
 +Wir hatten ja die Aufgabe an alle Prozesse ein ''​kill -15''​ zu senden.
 +
 +<code bash>ps -fu www-data | awk '! /UID/ {print $2}' | xargs kill -15
 +# sehr gewoehnungsbeduerftig
 +ps -u www-data -o pid= | xargs kill -15</​code>​
 +
 +Das ''​-o pid=''​ gibt nur die Spalte PID aus und unterdrueckt den Spaltenkopf.
 +
 +<code bash>ps -fu www-data -o pid= | wc -l</​code>​
 +
 +Liefert entsprechend auch die richtige Anzahl der Prozesse.
 +
 +Man kann auch mehrere Spalten kombinieren.
 +
 +<code bash>ps -u www-data -o pid= -o cmd=</​code>​
 +
 +Gibt nur PID und Kommando aus.
 +
 +Um eine Idee vom Speicherverbrauch zu bekommen, kann man sich auch nur die Resident Set Size und Virtual Set Size ausgeben lassen.
 +
 +<code bash>ps -u www-data -o rsz -o vsz</​code>​
 +
 +Und gleich zusammenzaehlen ...
 +
 +<code bash>ps -u www-data -o rsz -o vsz | awk '​{rsz+=$1 ; vsz+=$2} END {print rsz/​1024,​vsz/​1024}'</​code>​
 +
 +Zu awk machen wir bestimmt auch einmal etwas.
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
adminstoriesprozesse.txt · Zuletzt geändert: 20120901 17:10 von Dirk Deimeke