Druckversion

Nutzerkommandos - Prozesssteuerung

bg - Prozess im Hintergrund weiterlaufen lassen Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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:

  • Mehrere Prozess-IDs
  • -g GID Die Gruppennummer von Prozessen
  • -u Nutzer Der Besitzer der Prozesse


top - Prozesse sortiert anzeigen Zurück Anfang

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.

Interaktive Arbeit mit top

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

Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang