Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 14 Linux-UNIX-Kommandoreferenz
  gp 14.1 Kurzübersicht
  gp 14.2 Dateiorientierte Kommandos
  gp 14.3 Verzeichnisorientierte Kommandos
  gp 14.4 Verwaltung von Benutzern und Gruppe
  gp 14.5 Programm- und Prozessverwaltung
  gp 14.6 Speicherplatzinformationen
  gp 14.7 Dateisystem-Kommandos
  gp 14.8 Archivierung und Backup
  gp 14.9 Systeminformationen
  gp 14.10 System-Kommandos
  gp 14.11 Druckeradministration
  gp 14.12 Netzwerkbefehle
  gp 14.13 Benutzerkommunikation
  gp 14.14 Bildschirm- und Terminalkommandos
  gp 14.15 Online-Hilfen
  gp 14.16 Alles rund um PostScript-Kommandos
  gp 14.17 Gemischte Kommandos


Rheinwerk Computing

14.5 Programm- und Prozessverwaltundowntop


Rheinwerk Computing

at – Kommando zu einem bestimmten Zeitpunkt ausführen lassen  downtop

Mit dem Kommando at können Sie ein Kommando zum angegebenen Zeitpunkt ausführen lassen, auch wenn der Benutzer zu diesem Zeitpunkt nicht angemeldet ist. Beispielsweise können Sie mit

at 2130 -f myscript

das Script »myscript« um 21:30 Uhr ausführen lassen. Natürlich lassen sich mehrere solcher zeitgesteuerten Kommandos einrichten. Jeder dieser at-Aufrufe wird an die at-Queue (atq) angehängt. Natürlich funktioniert dies auch mit Datum:

at 2200 apr 21 -f myscript

So würde das Script »myscript« am 2. April um 22 Uhr ausgeführt. Wollen Sie sich alle Aufträge der atq auflisten lassen, müssen Sie die Option –l verwenden:

at -l

Wollen Sie den Status des Auftrags mit der Nummer 33 anzeigen lassen, geben Sie Folgendes ein:

at -l 33

Soll dieser Auftrag gelöscht werden, so kann die Option –d verwendet werden:

at -d 33

Rheinwerk Computing

batch – Kommando irgendwann später ausführen lassen  downtop

Mit batch lesen Sie Kommandos von der Kommandozeile, welche zu einem späteren Zeitpunkt ausgeführt werden, sobald das System Zeit hat. Dies wird bei extrem belasteten Rechnern gern verwendet, wenn man das Kommando bzw. Script zu einer Zeit ausführen lassen will, in der die Systemlast definitiv niedrig ist, und dies nicht nur zu vermuten ist. Die angegebenen Kommandos werden auch dann ausgeführt, wenn der Benutzer nicht angemeldet ist. Um batch auszuführen, muss auch hier der at-Daemon, der auch für das Kommando at verantwortlich ist, laufen.

you@host > batch
warning: commands will be executed using /bin/sh
at> ls -l
at> ./myscript
at> sleep 1
at> (Strg)+(D)
job 1 at 2005–04–21 23:30

Das Ende der Kommandozeileneingabe von batch müssen Sie mit (Strg)+(D) angeben.


Rheinwerk Computing

bg – einen angehaltenen Prozess im Hintergrund fortsetzen  downtop

Mit dem Kommando bg können Sie einen (z. B. mit (Strg)+(Z)) angehaltenen Prozess im Hintergrund fortsetzen. bg wurde bereits in Abschnitt 8.7 behandelt.


Rheinwerk Computing

cron/crontab – Programme in bestimmten Zeitintervallen ausführen lassen  downtop

Mit cron können Sie beliebig viele Kommandos automatisch in bestimmten Zeitintervallen ausführen lassen. Einmal pro Minute sieht dieser Dämon in einen Terminkalender (crontab) nach und führt gegebenenfalls darin enthaltene Kommandos aus. cron wurde bereits ausführlich in Abschnitt 8.8 behandelt.


Rheinwerk Computing

fg – einen angehaltenen Prozess im Vordergrund fortsetzen  downtop

Mit dem Kommando fg können Sie einen (z. B. mit (Strg)+(Z)) angehaltenen Prozess im Vordergrund fortsetzen. fg wurde bereits in Abschnitt 8.7 behandelt.


Rheinwerk Computing

jobs – Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse  downtop

Mit jobs bekommen Sie eine Liste mit den aktuellen Jobs zurückgegeben. Neben der Jobnummer steht bei jedem Job der Kommandoname, der Status und eine Markierung. Die Markierung »+« steht für den aktuellen Job, »-« für den vorhergehenden Job. Das Kommando job wurde bereits in Abschnitt 8.7 behandelt.


Rheinwerk Computing

kill – Signale an Prozesse mit einer Prozessnummer senden  downtop

Mit kill senden Sie den Prozessen durch Angabe der Prozessnummer ein Signal. Standardmäßig wird das Signal SIGTERM zum Beenden des Prozesses gesendet. Es lassen sich aber auch beliebige andere Signale senden. Das Signal wird dabei als Nummer oder als Name übermittelt. Einen Überblick zu den möglichen Signalnamen finden Sie mit der Option –l. Das Kommando kill wurde bereits ausführlicher in Abschnitt 7.2 beschrieben.


Rheinwerk Computing

killall – Signale an Prozesse mit einem Prozessnamen senden  downtop

Der Name killall führt schnell in die Irre. Damit lassen sich nicht etwa alle Prozesse »killen«, sondern killall stellt eher eine Erleichterung für kill dar. Anstatt wie mit kill einen Prozess mit der Prozessnummer zu beenden bzw. ein Signal zu senden, kann mit killall der Prozessname verwendet werden. Was gerade bei unzählig vielen gleichzeitig laufenden Prozessen eine erhebliche Erleichterung darstellt, weil man hier nicht mühsam erst nach der Prozessnummer (z. B. mit dem Kommando ps) suchen muss. Ansonsten lässt sich killall ähnlich wie kill verwenden, nur dass der Signalname ohne das vorangestellte SIG angegeben wird. Eine Liste aller Signale erhalten Sie auch hier mit der Option –l.

you@host > sleep 60 &
[1] 5286
you@host > killall sleep
[1]+  Beendet                 sleep 60

Rheinwerk Computing

nice – Prozesse mit anderer Priorität ausführen lassen  downtop

Mit nice können Sie veranlassen, dass ein Kommando mit einer niedrigeren Priorität ausgeführt wird.

nice [-n] kommando [argumente]

Für n können Sie dabei eine Ziffer angeben, um wie viel die Priorität verändert werden soll. Der Standardwert, falls keine Angabe erfolgt, lautet 10 (-20 ist die höchste und 19 die niedrigste Priorität). Prioritäten höher als 0 darf ohnehin nur root starten. Häufig wird man das Kommando mit nice im Hintergrund starten wollen.

nice find / -name document -print > /home/tmp/find.txt &

Hier wird mit find nach einer Datei »document« gesucht und die Ausgabe in die Datei find.txt geschrieben. Der Hintergrundprozess find wird dabei von nice mit einer niedrigen (10) Priorität gestartet. Dies stellt eine gängige Verwendung von nice dar.


Rheinwerk Computing

nohup – Prozesse beim Beenden einer Sitzung weiterlaufen lassenHH  downtop

Mit nohup schützen Sie Prozesse vor dem HANGUP-Signal. Dadurch ist es möglich, dass ein Prozess im Hintergrund weiterlaufen kann, auch wenn sich ein Benutzer abmeldet. Ohne nohup würden sonst alle Prozesse einer Login-Shell des Anwenders durch das Signal SIGHUP beendet. Allerdings tritt dieses Verhalten nicht auf allen Systemen auf. Mehr zu nohup finden Sie in Abschnitt 8.4, wo dieses Kommando ausführlicher behandelt wurde.


Rheinwerk Computing

ps – Prozessinformationen anzeigen  downtop


Hinweis   ps ist eines dieser Kommandos, welches vollkommen unterschiedliche Optionen auf den unterschiedlichen Betriebssystemen bietet. Die folgenden Beschreibung bezieht sich daher auf Linux.


ps ist wohl das wichtigste Kommando für Systemadministratoren, um an Informationen zu aktiven Prozessen zu gelangen (neben top). Rufen Sie ps ohne irgendwelche Argumente auf, werden Ihnen die zum jeweiligen Terminal gestarteten Prozesse aufgelistet. Zu jedem Prozess erhalten Sie die Prozessnummer (PID), den Terminal-Namen (TTY), die verbrauchte Rechenzeit (TIME) und den Kommandonamen (COMMAND). Aber neben diesen Informationen lassen sich über Optionen noch viele weitere Informationen entlocken. Häufig verwendet wird dabei der Schalter –e, womit Informationen zu allen Prozessen zu gewinnen sind (also nicht nur zum jeweiligen Terminal), und ebenso der Schalter –f, womit Sie noch vollständigere Informationen bekommen:

you@host > ps -ef
UID       PID  PPID  C STIME TTY        TIME CMD
root        1     0  0 Apr21 ?      00:00:04 init [5]
root        2     1  0 Apr21 ?      00:00:00 [ksoftirqd/0]
root        3     1  0 Apr21 ?      00:00:00 [events/0]
root       23     3  0 Apr21 ?      00:00:00 [kblockd/0]
...
postfix  5942  2758  0 00:17 ?      00:00:00 pickup -l -t fifo -u
you      6270     1  0 00:26 ?      00:00:00 /opt/kde3/bin/kdesud
you      7256  3188  0 01:50 pts/36 00:00:00 ps -ef

Mittlerweile beinhaltet das Kommando ps unglaublich viele Optionen, die zum Teil systemabhängig sind, weshalb auf jeden Fall die man-Seite von ps zur Rate gezogen werden sollte. Häufig sucht man in der Liste von Prozessen nach einem bestimmten. Diesen können Sie folgendermaßen »herauspicken«:

you@host > ps -ef | grep kamix
tot       3171     1  0 Apr21 ?        00:00:00 kamix

Damit noch nicht zufrieden, will man gern auch gleich die Prozessnummer (PID) erhalten:

you@host > ps -ef | grep kamix | awk '{ print $2; exit }'
3171

Aber so umständlich muss dies nicht sein. Sie können hierzu auch pgrep (sofern vorhanden) verwenden.


Rheinwerk Computing

pgrep – Prozesse über ihren Namen finden  downtop

Im Abschnitt zuvor wurde pgrep kurz angesprochen. Sofern Sie die Prozessnummer eines Prozessnamens benötigen, ist pgrep das Kommando der Wahl.

you@host > pgrep kamix
3171

pgrep liefert zu jedem Prozessnamen die Prozessnummer, sofern ein entsprechender Prozess gerade aktiv ist und in der Prozessliste (ps) auftaucht.


Rheinwerk Computing

pstree – Prozesshierachie in Baumform ausgeben  downtop

Mit pstree können Sie die aktuelle Prozesshierarchie in Baumform ausgeben lassen. Ohne Angabe von Argumenten zeigt pstree alle Prozesse an, angefangen vom ersten Prozess init (PID=1). Geben Sie hingegen eine PID oder einen Loginnamen an, so werden nur die Prozesse des Benutzers oder der Prozessnummer hierarchisch angezeigt.


Rheinwerk Computing

renice – Priorität laufender Prozesse verändern  downtop

Mit dem Kommando renice können Sie im Gegensatz zu nice die Priorität von bereits laufenden Prozessen verändern. Ansonsten gilt auch hier alles schon beim Kommando nice Gesagte. Das Kommando renice wurde bereits in Abschnitt 8.1 beschrieben.


Tipp für Linux   Komfortabler können Sie die Priorität laufender Prozesse mit dem Kommando top verändern. Ein Tastendruck (R) fragt Sie nach der Prozessnummer und dem nice-Wert, von welchem Prozess Sie die Priorität verändern wollen.



Rheinwerk Computing

sleep – Prozesse suspendieren (schlafen legen)  downtop

Mit sleep legen Sie einen Prozess für n Sekunden schlafen. Voreingestellt sind zwar Sekunden, aber über Optionen können Sie hierbei auch Minuten, Stunden oder gar Tage verwenden.


Rheinwerk Computing

su – Ändern der Benutzerkennung (ohne Neuanmeldung)  downtop

Dieses Kommando wird irrtümlicherweise immer als SuperUser abgekürzt, heißt aber in Wirklichkeit SwitchUser. su hat also zunächst überhaupt nichts mit dem »Superuser« (alias root) zu tun. Dieses Missverständnis resultiert daraus, dass die meisten Anwender dieses Kommando dazu verwenden, sich kurz die Root-Rechte (sofern diese vorhanden sind) anzueignen. Durch die Angabe ohne Argumente wird hierbei gewöhnlich auch nach dem Passwort des Superusers gefragt.

you@host > whoami
you
you@host > su
Password:********
linux:/home/you # whoami
root
linux:/home/you # exit
exit
you@host > whoami
you
you@host > su john
Password:********
you@linux:/home/john> whoami
john
you@linux:/home/john> exit
exit

su startet immer eine neue Shell mit der neuen Benutzer- (UID) und Gruppenkennung (GID). Wie bei einem neuen Login wird nach einem Passwort gefragt. Geben Sie keinen Benutzernamen an, versucht su zu UID 0 zu wechseln, was ja der Superuser ist. Sofern Sie »Superuser« sind, können Sie auch die Identität eines jeden Benutzers annehmen, ohne ein entsprechendes Passwort zu kennen.


Rheinwerk Computing

sudo – Programm als anderer Benutzer ausführen  downtop

sudo ist ein Kommando, womit ein bestimmter Benutzer ein Kommando ausführen kann, wozu er normalerweise nicht die Rechte hat (bspw. für administrative Aufgaben). Dazu legt root gewöhnlich in der Datei /etc/sudoers folgenden Eintrag ab:

john ALL=/usr/bin/kommando

Jetzt kann der User »john« das Kommando mit folgendem Aufruf starten:

you@host > sudo /usr/bin/kommando
Passwort: *********

Nachdem »john« sein Passwort eingegeben hat, wird das entsprechende Kommando ausgeführt, wozu er normalerweise ohne den Eintrag in /etc/sudoers nicht im Stande wäre. Der Eintrag wird gewöhnlich mit dem Editor vi mit dem Aufruf visudo vorgenommen.

Natürlich können Sie als normaler Benutzer auch mittels sudo Programme unter einem anderen Login-Namen ausführen. Dies erledigen Sie mit folgendem Aufruf (hier bspw. das Kommando whoami ausgeführt):

you@host > whoami
you
you@host > sudo -u john whoami
Password:********
john
you@host >

Das Kommando sudo hat bei mir bis vor kurzem eine Art Schattendasein geführt. Wenn ich ein Kommando benötigt habe, dass root-Rechte erfordert, habe ich mich schnell mit su befördert. Mittlerweile allerdings, seitdem ich das immer beliebter werdende »(k)ubuntu« verwende, bei dem es gar keinen root mehr gibt, sondern sudo für solche Zwecke verwendet wird, hat sich das Kommando einen »Stammplatz« erobert. Darauf wollte ich kurz hinweisen, bevor Sie auf die Idee kommen, »(k)ubuntu« nochmals zu installieren, weil Sie vielleicht vermuten, irgendwo das root-Passwort vergessen zu haben. »(k)ubuntu« ist da einfach anders als andere Distributionen.


Rheinwerk Computing

time – Zeitmessung für Prozesse  downtop

Mit time führen Sie das in der Kommandozeile angegebene Kommando bzw. Script aus und bekommen die Zeit, die dafür benötigt wurde zurück. Diese Zeit wird dabei aufgeteilt in die tatsächlich benötigte Zeit (real), die Rechenzeit im Usermodus (user) und diejenige im Kernelmodus (sys). Das Kommando time wurde bereits in Abschnitt 9.6 behandelt.


Rheinwerk Computing

top – Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch)  toptop

Mit top bekommen Sie eine Liste der gerade aktiven Prozesse angezeigt. Die Liste wird nach CPU-Belastung sortiert. Standardmäßig wird top alle fünf Sekunden aktualisiert; beendet wird top mit (Q). top kann aber noch mehr, als die Auslastung der einzelnen Prozesse anzuzeigen, beispielsweise können Sie mit dem Tastendruck (K) (kill) einem bestimmten Prozess ein Signal senden oder mit r (renice) die Priorität eines laufenden Prozesses verändern. Ein Blick auf die man-Seite von top bringt außerdem noch einen gewaltigen Überblick zu diesem auf den ersten Blick einfachen Kommando zum Vorschein.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern