ABSTRACT: prozesse und jobcontrol werkzeuge werden kurz vorgestellt ( ps, top, & , fg, bg , jobs ) AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt heute machen wir gleich mehre kommandos auf einmal. dafuer eher kurze und einfache. aber die die alle einwenig zusammenhaengen. wenn du: ps ax (ps steht fuer "process status") machst siehst du alle programme die momentan gerade auf deinem compi laufen. d.h. manche davon laufen nicht die schlafen (die haben ein S fuer sleeping). man nennent diese laufenden (und schlafenden) programme: "prozesse" oder manchmal auch "jobs"). jeder dieser jobs hat eine nummer die ihn identifiziert (die steht in der ps ausgabe an erster stelle) ein andere befehl um sich die aktuell laufenden prozesse anzusehen ist: top top desshalb weil er die prozesse geordnet nach CPU zeit verbrauch ordnet. (man kann auch nach speicher verbrauch ordnen wenn man im top gross M drueckt) die anzeige wird solange periodisch upgedated solange bis man q drueckt um das programm zu beenden. die erste spalte ist wieder die nummer des prozesses (auch PID genannt). die ganz oberste zeile zeigt dir die selbe ausgabe an wie der befehl uptime die 3 werte hinter "load average" ist die gemittelte anzahl an prozessen die gleichzeitig laufen wollen. und zwar ueber 1 bzw 5 bzw 15 minuten gemittelt. ein load average von 1 heisst also dass im durchschnitt staendig 1 prozess laufen will. d.h. dein compi ist zu 100% ausgelastet. wenn du einen load average von z.b. 3 hast dann waeren 3 prozesse die alle gleichzeitig laufen wollen. dein compi ist auch zu 100% ausgelastet aber jeder der prozesse bekommt nur ein drittel der zeit die er gerne haben wuerde. ueblicherweise sollte der load average unter 1 sein.. wenn dein compi also aus irgend einem grunde seltsam langsam zu reagieren scheint lohnt sich meist ein aufruf von top um zu sehen wer denn da soviel CPU zeit verbraucht. (meist ein haengengebliebenes netscape) um das programm zu beenden kannst du den "kill" befehl benutzen: kill 1234 wuerde den prozess mit der nummer 1234 killen in dem ihm mitgeteilt wird dass er sich gefaelligst beenden soll. wenn sich der prozess aber wirklich aufgehaengt hat ignoriert er das kill eventuell. dann kann man noch den "holzhammer" verwenden: kill -9 1234 sollte dann funktionieren. wenn du zum "ueben" fuers killen ein programm haben willst das lange rechnet und viel CPU braucht kannst du ja z.b: echo 123456^123456 | bc & eintippen. das wuerde dem programm "bc" sagen es soll 123456^123456 ausrechnen.. die zahl die da rauskommt hat ja doch einige hunderdtausend stellen.. notfalls kannst du auch alle bc killen mit: killall bc so. mehr ueber job control ein ander mal.. wollen wir nur ein programm das lange braucht aber keine CPU zeit verbraet dann koennen wir auch sleep 1000 & verwenden. das macht nichts anders als 1000 sekunden zu "schlafen". auch die bash bietet uns einige moeglichkeiten um mit jobs umzugehen. das & am ende einer zeile sagt der shell dass dieser prozess im hintergrund laufen soll und nicht unsere aktuelle shell blockieren soll. (ansonsten muesstest du 1000 sekunden warten bis du wieder einen shell prompt (eingabeaufforderung) bekommst) bemerkt man erst mit der zeit dass man einen prozess gerne im hitergrund haben wuerde dann kann man das mit folgenden tasten machen: ^z (control-z) druecken. das "stoppt" den prozess. er laeuft nicht aber er kann wieder reaktiviert werden. und zwar mit dem shell befehl: bg (fuer background) das reaktiviert den letzten gestoppten befehl und schickt ihn in den hintergrund. er laeuft dann so als waere er mit & am ende gestartet worden. alternativ kann man fg (foreground) verwenden um den gestoppten prozess im fordergrund weiterzufuehren.. (nur wenn der prozess im fordergrund laeuft kann man auch eingaben dorthin machen). der bash befehl: jobs zeigt alle gerade von dieser shell aus kontrollierten jobs an. die nummer in kllammer kann man beim kill verwenden um den prozess anzusprechen (anstatt seiner echten prozess nummer.) also z.b: sleep 100 & kill %1 wuerd genau diesen befehl killen. befehle die man gerne in den hintergrund schickt sind welche die ohnehin keine ausgabe auf dem terminal machen sondern die grafische X11 oberflaeche verwenden. z.b.: xterm & oder: netscape & EXERCISES: starte ein: sleep 1000 benutze ^z und fg und bg um diesen befehl in den vordergrund und in den hintergrund zu schicken. schau dir die ausgabe von "jobs" an. schau dir die ausgabe von ps und top an. versuche einen von dir gestarteten sleep befehl auf verschiedenste arten zu killen. REFERENCES: man ps ps --help man top man kill help kill kill --help help fg help bg help jobs