next up previous contents index
Next: Media Up: Korn- og C-skallet Previous: Valg av innloggingsskall

Jobb-kontroll

Både csh og ksh har jobb-kontroll  . Jobb-kontroll er muligheten for å flytte eksekverande prosessar i bakgrunnen, forgrunnen, stoppe eller restarte dei. Jobb-kontroll har på mange måtar vorte erstatta og duplisert ved hjelp av skall-nivå, virtuelle terminalar og X-Windows,- men mange anser jobb-kontroll som den beste måten å kontrollere prosessar. Bourne-skallet understøttar jobb-kontroll dersom det vert starta med namnet jsh  ( for job shell ) istaden for sh. Når ein startar ein prosess eller ein jobb i forgrunnen vil terminalen vere "blokkert" heilt til prosessen er ferdig. Då er det ofte greitt å legge denne prosessen i bakgrunnen for å få tilbake kontrollen av terminalen. På same måte er det ønskeleg å få ein bakgrunns-prosess til ein forgrunns-prosess,- enten for å kontrollere den eller gje inn data til prosessen. Når ein har kjøyrer ein prosess i forgrunnen, kan ein trykke CTRL-Z  for å suspendere eller stoppe prosessen.

 73 csh:zevs{trondk} > sleep 40
CTRL-Z
[1] + Stopped						sleep 40
74 csh:zevs{trondk} >
Prosessen har stoppa, og ein beskjed vert skreven ut som inneheld jobb-nummeret, status Stopped og kommando-linja sleep 40. Legg merke til at sjølv om denne prosessen er stoppa så er ikkje klokka stoppa, dvs. at dersom ein startar opp denne prosessen om 40 sekund vil denne prosessen fullføre umiddelbart. Når ein står i denne situasjonen kan ein starte nye prosessar/jobbar, drepe stoppa jobbar/prosessar,restarte stoppa prosessar/jobbar i forgrunnen eller i bakgrunnen. For å kikke på ei liste over alle prosessar/jobbar, inkludert bakgrunnsprosessar   og stoppa prosessar/jobbar, brukar ein kommandoen jobs. Den listar prosessar/ jobbar på same måte som ovanfor.

 74 csh:zevs{trondk} > jobs
[1] + Stopped						 sleep 40
75 csh:zevs{trondk} >
No kan ein bruke jobb-nummeret til å kontrollere desse jobbane. Bruk bg  ( for background ) for å restarte jobbar som bakgrunnsjobbar, og fg  ( for forground ) for å restarte jobbar som forgrunnsjobbar. Desse kommandoane tek ein jobb-nummer innleia med eit %  ( prosent tegn ) som parameter.

75 csh:zevs{trondk} > fg %1
sleep 40
Som vi ser vert kommando-linja skreve ut på nytt og jobben "overtek" kontrollen over terminalen. Kommandoen bg verkar akkurat på same måten, forskjellen er at jobben vert lagt i bakgrunnen, på same måten som om ein hadde brukt &  på slutten av kommando-linja. Ein kan bruke %streng istadenfor %tall, der streng er alle kommando-linjer som startar med streng, eller formen %?streng som vil finne alle kommando-linjer som inneheld streng. Ein kan stoppe bakgrunnsjobbar med kommandoen stop  , og restarte dei igjen med fg og bg.  

 76 csh:zevs{trondk} > (sleep 40; echo halloen ) &
[1]		12056
77 csh:zevs{trondk} > jobs
[1] + Running						(sleep 40; echo halloen) &
78 csh:zevs{trondk} > stop %?sleep
[1] + Stopped (signal)						(sleep 40; echo halloen)&
79 csh:zevs{trondk} > jobs
[1] + Stopped (signal)						(sleep 40; echo halloen)&
80 csh:zevs{trondk} > fg %1
(sleep 40; echo halloen)
halloen
81 csh:zevs{trondk} > fg %1
ksh: fg: no such job
82 csh:zevs{trondk} >
Dersom ein prøvar å logge ut medan ein har stoppa jobbar vil skallet klage.

 82 csh:zevs{trondk} > jobs
[1] + Stopped (signal)						(sleep 40; echo halloen)&
83 csh:zevs{trondk} > exit
You have stopped jobs
84 csh:zevs{trondk} >
Dersom dette skjer, bør ein studere jobb-lista og frigjere prosessar enten ved å fullføre dei eller drepe dei. Dersom ein prøvar på nytt å logge ut vil csh og ksh drepe dei stoppa jobbane og logge ut. Ein kan drepe jobbar med kommandoen kill :

kill -signal %tall
der signal er det signalet ein vil sende, og %tall refererer til jobb-nummeret.


next up previous contents index
Next: Media Up: Korn- og C-skallet Previous: Valg av innloggingsskall
Trond.Kandal@itea.ntnu.no