Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
admin_grundlagen:prozesse [2013/05/14 08:47] ingo_wichmann [Links] |
admin_grundlagen:prozesse [2023/09/25 10:15] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Jobverwaltung der bash ====== | ||
- | Vordergrundprozess anhalten: | ||
- | ''STRG+z'' | ||
- | Job in den Hintergrund schieben: | ||
- | bg | ||
- | Job in den Vordergrund schieben: | ||
- | fg | ||
- | Jobs anzeigen: | ||
- | jobs | ||
- | |||
- | Programm im Hintergrund laufen lassen: | ||
- | sleep 10 & | ||
- | |||
- | ====== Prozessverwaltung ====== | ||
- | |||
- | ===== Prozesse anzeigen ===== | ||
- | ==== ps ==== | ||
- | Anzeigen aller Prozesse: | ||
- | (( oft sieht man auch die BSD-Syntax: | ||
- | ps ax | ||
- | )) | ||
- | ps -e | ||
- | Anzeigen aller Prozesse, incl. Benutzer: | ||
- | (( | ||
- | ps aux | ||
- | )) | ||
- | ps -elf | ||
- | Anzeige alle sortiert: | ||
- | ps -e --sort rsz | ||
- | Anzeige ausgewählter Felder sortiert: | ||
- | ps -eo cmd,uname,rsz,cputime,%cpu,state --sort rsz | ||
- | Anzeige ausgewählter Prozesse und ausgewählter Felder sortiert: | ||
- | ps -C gzip,bzip2 -o cmd,uname,rsz,cputime,%cpu,state --sort rsz | ||
- | | ||
- | Anzeige aller Prozesse incl. cgroup: | ||
- | |||
- | alias psc='ps xawf -eo pid,user,cgroup,args' | ||
- | psc | ||
- | ==== pgrep, lsof, pstree, top ==== | ||
- | Anzeige aller zip Prozesse: | ||
- | pgrep -l zip | ||
- | Anzeigen, welche Dateien ein Prozess geöffnet hat: | ||
- | lsof -p 4711 | ||
- | Prozesse baumartig darstellen: | ||
- | pstree | ||
- | Prozesse nach Ressourcenverbrauch sortiert anzeigen: | ||
- | top | ||
- | |||
- | ===== Prozess Prioritäten ===== | ||
- | Priorität anzeigen | ||
- | nice | ||
- | oder | ||
- | ps -p $$ -o pid,nice,cmd | ||
- | |||
- | Prozess mit um 5 erhöhter Priorität starten: | ||
- | nice -5 bash | ||
- | |||
- | Priorität eines laufenden Prozesses auf 3 ändern: | ||
- | renice 3 | ||
- | |||
- | ===== Signale ===== | ||
- | Prozess normal beenden, Daten werden gepeichert: | ||
- | kill 4711 | ||
- | kill -TERM 4711 | ||
- | |||
- | Prozess sofort beenden, ohne speichern: | ||
- | kill -KILL 4711 | ||
- | kill -9 4711 | ||
- | |||
- | Prozess bitten, die Konfigurationsdatei neu einzulesen ((das funktioniert nur bei den meisten Serverdiensten)): | ||
- | kill -HUP 4711 | ||
- | |||
- | aktuelle Shell informieren, daß sich die Fenstergröße geändert hat | ||
- | kill -WINCH $$ | ||
- | |||
- | Signal für aktuelle Shell umdefinieren: | ||
- | trap 'echo bäah!' TERM | ||
- | kill -TERM $$ | ||
- | |||
- | Alle zip-Prozesse beenden: | ||
- | pkill zip | ||
- | ===== Beispiel: Zombie erzeugen ===== | ||
- | sleep 30 & | ||
- | exec sleep 200 | ||
- | |||
- | ====== Wieviel Speicher ist noch frei? ====== | ||
- | |||
- | free -m | ||
- | <file> | ||
- | total used free shared buffers cached | ||
- | Mem: 503 296 206 0 26 102 | ||
- | -/+ buffers/cache: 167 336 | ||
- | Swap: 1592 0 1592 | ||
- | </file> | ||
- | |||
- | Hier das ganze mal beschriftet, damit klar ist, wovon ich unten rede: | ||
- | |||
- | free -m | ||
- | <file> | ||
- | total used free shared buffers cached | ||
- | Mem: (1) (2) (3) (4) (5) (6) | ||
- | -/+ buffers/cache: (7) (8) | ||
- | Swap: (9) (10) (11) | ||
- | </file> | ||
- | |||
- | - Die physikalische Menge flüchtigen Speichers, abzüglich dessen, was für den Kernel und dessen Datenstrukturen draufgeht. | ||
- | - Der benutzte Speicher, also alles, was für Programme, deren Libraries, Datenhaltung draufgeht. Außerdem der Buffer- und der Pagecache. | ||
- | - Unbenutzter Speicher. Niemand hat dort Dinge abgelegt. Der Speicher kann direkt benutzt werden, wenn man welchen braucht. Wobei er u. U. natürlich initialisiert werden sollte | ||
- | - Der durch Shared Memory belegte Speicher. | ||
- | - Der durch den Buffer-Cache belegte Speicher | ||
- | - Der durch den Page Cache belegte Speicher | ||
- | - Der belegte Speicher von (2) abzüglich der Summe aus (5) und (6) | ||
- | - Der freie Speicher von (3) plus der Summe aus (5) und (6) | ||
- | - Die gesamte Menge an Swapspace, die zur Verfügung steht. | ||
- | - Der belegte Swapspace | ||
- | - Der noch freie Swapspace, also (9) abzüglich (10) | ||
- | |||
- | Das bedeutet also, dass im Falle ganz oben insgesamt 167M von | ||
- | Programmen und ähnlichem belegt ist und ich theoretisch 336M | ||
- | zusätzliche belegen könnte. Dann wäre aber der PageCache | ||
- | auf 0 und der Buffer Cache ebenfalls. Da das sehr auf die | ||
- | Performance ginge, würde der Kernel vorher bereits einige | ||
- | Programme, die selten laufen (z. B. ein unbeschäftigter exim | ||
- | oder irgendwelche anderen Daemons, die selten laufen) in den | ||
- | Swap verschieben. Zum schnellen Überblick, wie viel Speicher | ||
- | denn noch frei ist (also eigentlich, wie viel Speicher denn | ||
- | noch nutzbar ist), ist die Zahl unter (8) am besten als | ||
- | Indikator zu gebrauchen. | ||
- | |||
- | |||
- | ===== Beispiel: Cache füllen ===== | ||
- | In einem Fenster Speicher beobachten: | ||
- | watch free -m | ||
- | |||
- | Im zweiten Fenster unsinnig Dateien lesen: | ||
- | grep -r lakdsjf /usr/ 2>/dev/null >/dev/null | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Beispiel: Cache leeren ===== | ||
- | In einem Fenster Speicher beobachten: | ||
- | watch free -m | ||
- | |||
- | Im zweiten Fenster ein Programm viel Speicher verbrauchen lassen: | ||
- | dd bs=1M count=1500 < /dev/zero | sort > /dev/null | ||
- | |||
- | ===== Beispiel: Speicher füllen ===== | ||
- | Prozess starten, der 2000MB verbraucht: | ||
- | dd if=/dev/zero bs=1M count=2000 | perl -e '$slurp=<>; sleep' | ||
- | |||
- | ====== Links ====== | ||
- | * http://blog.koehntopp.de/archives/2633-Wieviel-Speicher-brauchst-Du-denn.html (zur Zeit offline) |