bg - Prozess im Hintergrund weiterlaufen lassen |
Aufruf: bg [job_spec] |
Das Kommando lässt einen zuvor gestoppten Prozess im Hintergrund weiterlaufen.
Die Ausführung eines Prozesses wird durch Senden des Signals 19 (SIGSTOP) gestoppt.
Befinden sich mehrere Prozesse im Zustand "Stopp", kann mittels %n
der
gewünschte Prozess über seine Jobnummer angesprochen werden (siehe jobs).
user@sonne> ls -l > fifo ^z [1]+ Stopped ls --color=tty -l >fifo user@sonne> bg [1]+ ls --color=tty -l >fifo & user@sonne> |
Bemerkung: Die Eingabe von [Ctrl]-[Z] bewirkt in der Bash das Senden des Signals SIGSTP an den aktiven Prozess.
fg - Hintergrundprozess in den Vordergrund holen |
Aufruf: fg [job_spec] |
Ein im Hintergrund laufender Prozess kann in den Vordergrund geholt werden. Soll nicht
gerade der zuletzt im Hintergrund gestartet Prozess gewählt werden, ist die Angabe
der Jobnummer erforderlich, die man mit dem Kommando jobs
ermitteln
kann.
user@sonne> sleep 100& sleep
500& [1] 1177 [2] 1178 user@sonne> fg %2 |
jobs - Anzeige aktiver Jobs |
Aufruf: jobs [-lnprs] [jobspec ...] |
Mit dem Kommando lassen sich alle Hintergrundprozesse ("Jobs") der aktiven Shell anzeigen.
Als Optionen versteht jobs:
-l
Zusätzliche Anzeige der PID
-n
Nur Prozesse anzeigen, deren Status sich seit dem letzten Aufruf von jobs geändert hat
-p
Nur die PIDs anzeigen
-r
Nur aktive Prozesse anzeigen
-s
Nur gestoppte Prozesse anzeigen
user@sonne> sleep 100& [1] 1177 user@sonne> jobs [1]+ Running sleep 10000 & user@sonne> jobs -n [1] 1177 |
kill - Prozessen Signale senden |
Aufruf: kill [ -s signal | -n signum | sigspec ] pid ... |
Mit dem Kommando lassen sich Signale an Prozesse versenden. Die Angabe der Prozesse
erfordert deren Prozessnummer (PID) oder die Jobnummer (%n
). Fehlt die
Angabe des Signals, wird Signal 15 (SIGTERM) angenommen.
Mit der Option -l
gibt kill
eine Liste der möglichen
Signale aus:
user@sonne> kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGtrAP 6) SIGAbrT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR |
Die gebräuchlichsten Signale sind dabei 1 (SIGHUP), das vor allem verwendet wird, um Prozesse zum erneuten Einlesen ihrer Konfigurationsdateien zu zwingen, 15 (SIGTERM), das einer höflichen Aufforderung an einen Prozess gleichkommt, er solle doch seine Arbeit beenden (ein Prozess kann dieses Signal ignorieren) und 9 (SIGKILL), das für den betreffenden Prozess das sofortige Ende bedeutet.
user@sonne> kill -TERM 255 user@sonne> kill -15 236 user@sonne> sleep 100& [1] 5926 user@sonne> kill -KILL %1 |
Bei der Signalangabe in symbolischer Form wird der Signalname ohne die Vorsilbe SIG benutzt!
killall - Prozessen Signale senden |
Aufruf: killall [-egiqvw] [-signal] name ... |
Der wesentlichste Unterschied zum Kommando kill
ist die Spezifizierung
der Prozesse über den Namen der Kommandos, die sie ausführen oder mittels ihrer
Gruppennummer (-g GID
).
killall
sendet allen Prozessen Signale, die das Kommando ausführen,
mit der Option -i
kann aber eine nochmalige Rückfrage vor dem
tatsächlichen Senden erzwungen werden:
user@sonne> killall -i -15 bash Kill bash(280) ? (y/n) n Kill bash(350) ? (y/n) n Kill bash(351) ? (y/n) n Kill bash(352) ? (y/n) n bash: no process killed |
Mit der Option -w
wartet killall
so lange, bis der letzte
der angegebene Prozess seine Arbeit beendet hat. Das Kommando schickt hierzu periodisch
(jede Sekunde) erneut das Signal.
nice - Prozess mit anderer Priorität starten |
Aufruf: nice [OPTION]... [COMMAND [ARG]...] |
Ein zu startendes Kommando kann durch nice
eine andere als die
voreingestellte Priorität gegeben werden. D.h. im Vergleich zur "normalen
Priorität" erhält ein solcher Prozess prozentual weniger/mehr Rechenzeit
zugeteilt.
Ein Wert von -20 bedeutet dabei die höchste Priorität; ein Wert von 20 die
geringste. Ein normaler Nutzer darf die Priorität eines Prozesses nur verringern
(also den Wert erhöhen), nur Root kann diese erhöhen (den Wert verringern).
user@sonne> nice -n 19 gcc
bigprogram.c root@sonne> nice -n -10 inetd |
Mit renice kann die Priorität eines laufenden Prozesses beeinflusst werden.
nohup - Prozess vom Elternprozess abnabeln |
Aufruf: nohup COMMAND [ARG]... |
Das von nohup
gestartete Kommando läuft unabhängig von der
aktiven Shell. D.h. ein so gestartetes Kommando arbeitet auch nach dem Beenden der
Sitzung (logout) weiter. Die Ausgaben von nohup
werden ggf. in eine Datei
nohup.out
umgeleitet. Kann diese im aktuellen Verzeichnis nicht erzeugt
werden, wird sie im Heimatverzeichnis angelegt. Scheitert auch dies, beendet
nohup
seine Tätigkeit.
Ein über nohup
gestartetes Kommandos erhält eine um 5
erhöhte Priorität.
user@sonne> bash user@sonne> ./sleepproc& [1] 776 user@sonne> exit user@sonne> ps eax | grep spleepproc user@sonne> user@sonne> bash user@sonne> nohup ./sleepproc& [1] 786 user@sonne> exit user@sonne> ps eax | grep spleepproc 786 ? S N 0:00 sh ./sleepproc... |
Anmerkung: Im Beispiel wird in einer Subshell ein Skript "sleepproc" gestartet und die Shell beendet. Wie zu erwarten war, wurde der in der Shell gestartete Prozess mit dem Ende der Shell beendet. In einem zweiten Schritt wird das Skript "sleepproc" unabhängig von der Shell gestartet... es existiert auch nach Beendigung der Shell weiter.
ps - Prozesse anzeigen |
Aufruf: ps [options] |
Das Kommando gibt eine Momentaufnahme der Prozesse aus. Über Optionen lassen sich
zum einen die anzuzeigenden Prozesse selektieren und zum anderen das Ausgabeformat
steuern.
Achtung: das Kommando verwendet mehrere Stile der
Kommandoeingabe, die Option a
besitzt eine andere Bedeutung als die
Option -a
!
Wichtige Optionen zur Selektion von Prozessen sind:
-A oder -e
Wirklich alle Prozesse anzeigen
a
Alle Prozesse anzeigen, die ein Terminal kontrollieren
-U bzw. -G
Auswahl nach UID bzw. GID
N
Negation der Auswahl
p
Nur den angegebenen Prozess (PID ist anzugeben)
r
Nur laufende Prozesse
x
Auch Prozesse anzeigen, die kein Terminal kontrollieren
Optionen, die das Ausgabeformat steuern:
f
Prozesshierarchie als Baum anzeigen
-l
Langformat
e
Anzeige der Umgebungsvariablen des Prozesses
m
Anzeige aller Threads
user@sonne> ps PID TTY TIME CMD 280 tty1 00:00:00 bash 287 tty1 00:00:00 startx 288 tty1 00:00:00 tee 297 tty1 00:00:00 xinit 344 tty1 00:00:02 konsole 345 tty1 00:00:00 konsole 351 pts/1 00:00:00 bash 352 pts/0 00:00:00 bash 958 pts/2 00:00:00 ps user@sonne> ps -p 280 -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 500 280 273 0 60 0 - 580 wait4 tty1 00:00:00 bash user@sonne> ps -x -f PID TTY STAT TIME COMMAND 280 tty1 S 0:00 -bash 287 tty1 S 0:00 sh /usr/X11R6/bin/startx 297 tty1 S 0:00 \_ xinit /home/user/.xinitrc -- 309 tty1 S 0:07 \_ kwm 344 tty1 S 0:02 \_ konsole -restore konsolerc.1 -icon konsol 351 pts/1 S 0:00 | \_ /bin/bash 345 tty1 S 0:00 \_ konsole -restore konsolerc.4 -icon konsol 352 pts/0 S 0:00 | \_ /bin/bash 669 pts/0 S 0:00 | \_ BitchX tec2.saxsys.de 346 tty1 S 0:01 \_ konsole -restore konsolerc.5 -icon konsol 354 pts/2 S 0:00 | \_ /bin/bash 985 pts/2 R 0:00 | \_ ps -x -f 348 tty1 S 0:19 \_ webmaker -restore webmakerrc.2 288 tty1 S 0:00 tee /home/user/.X.err 339 tty1 S 0:02 kpanel 375 tty1 S 0:00 /usr/X11R6/bin/xload 336 tty1 S 0:00 krootwm 333 tty1 S 0:01 kbgndwm 327 tty1 S 0:01 kfm -d |
pstree - Prozessvererbung anzeigen |
Aufruf: pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user] |
Das Kommando stellt die aktiven Prozesse in einer Baumstruktur dar, welche die Prozessvererbung symbolisiert.
user@sonne> pstree init-+-actived |-atd |-cron |-gpm |-httpd---httpd |-in.identd---in.identd---5*[in.identd] |-inetd |-kflushd |-klogd |-kpiod |-kswapd |-kupdate |-lockd---rpciod |-2*[login---bash---ssh] |-login---sh |-2*[mingetty] |-nscd---nscd---5*[nscd] |-portmap |-syslogd |
Das Beispiel verdeutlich, dass init
der Elternprozess aller Prozesse ist.
pstree
versucht per Voreinstellung identische Prozesse in der Darstellung
zusammen zu fassen, so bedeutet 2*[mingetty]
, dass 2 Prozesse das Kommando
mingetty
ausführen. Mit der Option -c
wird diese
Zusammenfassung abgeschaltet:
... |-in.identd---in.identd-+-in.identd | |-in.identd | |-in.identd | |-in.identd | `-in.identd ... |
renice - Prozesspriorität ändern |
Aufruf: renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...] |
Prozessen kann mittels renice
nachträglich eine andere
Priorität zugeteilt werden. Wie auch bei nice
gilt, dass einzig Root
die Priorität erhöhen darf:
user@sonne> renice +10 23258 23258: Alte Priorität: 0, neue Priorität: 10 user@sonne> renice -10 23258 renice: 23258: setpriority: Keine Berechtigung |
Das Kommando erlaubt das gleichzeitige Verändern der Prioritäten mehrerer Prozesse. Mögliche Angaben sind:
-g GID
Die Gruppennummer von Prozessen-u Nutzer
Der Besitzer der Prozessetop - Prozesse sortiert anzeigen |
Aufruf: top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] |
top listet Prozesse, sortiert nach ihrem Anteil an CPU-Zeit, auf. Nach
Voreinstellung wird diese Liste aller 5 Sekunden aktualisiert, mit der Option -d
Zeit kann ein anderes Intervall eingestellt werden. Eine Option -q
lässt das Kommando die Liste so oft wie möglich aktualisieren, mit -n
Anzahl kann die Anzahl der Refreshs eingeschränkt werden.
Anschließend wird top
seine Arbeit beenden.
user@sonne> top 4:02pm up 3:16, 9 users, load average: 0.27, 0.16, 0.11 100 processes: 95 sleeping, 4 running, 1 zombie, 0 stopped CPU states: 4.5% user, 4.7% system, 0.0% nice, 90.7% idle Mem: 127812K av, 122576K used, 5236K free, 77260K shrd, 2112K buff Swap: 963816K av, 384K used, 963432K free 59184K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 413 root 11 0 17784 17M 2064 R 0 3.5 13.9 5:16 X 489 user 10 0 1216 1216 996 R 0 2.3 0.9 5:15 xosview.bin 1818 root 4 0 1008 1008 732 S 0 1.5 0.7 0:09 ssh 3549 user 7 0 1064 1064 840 R 0 1.5 0.8 0:01 top 98 root 0 0 364 364 244 S 0 0.1 0.2 0:00 scanlogd 1 root 0 0 204 204 172 S 0 0.0 0.1 0:03 init 2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd 3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate 4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiod 5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kswapd 6 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread 90 bin 0 0 400 400 316 S 0 0.0 0.3 0:00 portmap 104 root 0 0 696 696 548 S 0 0.0 0.5 0:00 syslogd 108 root 0 0 856 856 384 S 0 0.0 0.6 0:00 klogd |
Als Überschrift zeigt top
die Uptime, die Anzahl der Prozesse, eingeteilt nach ihrem Status,
die Auslastung von CPU, Speicher und Swap an.
Es folgen die Informationen zu den einzelnen Prozessen (die Auflistung enthält nur
die Beschreibung der Standard-Informationen):
PID
Prozessnummer
USER
Nutzer, mit dessen Rechten der Prozess ausgeführt wird
PRI
Priorität, mit der der Prozess läuft
NI
Der nice-Faktor, mit dem der Prozess läuft
SIZE
Speichergröße des Prozesses inklusive Stack
RSS
Verbrauch an physischen Speicher
SHARE
Größe des Speichers, der auch von anderen Prozessen genutzt wird
STAT
Status des Prozesses
LIB
Speicherverbrauch der Bibliotheken des Prozesses (bei ELF-Prozessen wird diese Größe mit bei SHARE aufgeschlagen)
%CPU
Verbrauchte CPU-Zeit im letzten Refresh-Intervall (in Prozent)
%MEM
Speicherverbrauch (in Prozent)
COMMAND
Kommando, das der Prozess ausführt.
Während das Kommando in periodischen Abständen das Terminal mit neuen Informationen überschwemmt, lassen sich verschiedenste Aktionen vornehmen. Folgende Eingaben (Auswahl) bewirken folgende Reaktion:
[Leertaste]
Sofortige Aktualisierung der Anzeige
f
Hierüber kann die Anzeige der Informationen eingestellt werden. Es erscheint eine Auflistung aller Informationsfelder, wobei ausgewählte Felder mit einem Stern * gekennzeichnet sind. Vor jedem Feld steht ein Bezeichner (Buchstabe), durch dessen Eingabe die Auswahl umgeschalten wird. Rückkehr zur Ausgabe von top durch [Enter].
h bzw. ?
Anzeige einer Kurzhilfe zu den verschiedenen Kommandos
k
Zum Senden von Signalen an einen Prozess. Es wird zur Angabe der PID und des zu sendenden Signals aufgefordert.
n bzw. #
Zum Ändern der Anzahl angezeigter Prozesse. Man wird zur Eingabe der neuen Anzeige aufgefordert.
o
Ändern der Reihenfolge der Darstellung der Felder. In der oberen Zeile der erscheinenden Ausgabe ist die Reihenfolge symbolisch dargestellt, wobei ein gewähltes Feld durch einen Großbuchstaben markiert ist. Durch Eingabe des entsprechenden Feldbezeichners als Kleinbuchstabe, wird der Eintrag in der Liste "nach hinten" befördert; mittels des Großbuchstaben nach vorn. Rückkehr zur Ausgabe von top durch [Enter].
Current Field Order: bAcDgHIjklMnoTPrqsuzVYEFWX Upper case characters move a field to the left, lower case to the right * A: PID = Process Id B: PPID = Parent Process Id C: UID = User Id * D: USER = User Name * E: %CPU = CPU Usage * F: %MEM = Memory Usage G: TTY = Controlling tty * H: PRI = Priority * I: NI = Nice Value ... |
r
Ändern der Priorität eines Prozesses
q
Beendet top