[ACC Hemsida]
[Hjälp]
[Information]
[Index]
[This information is only available in Swedish]
När man skriver ett kommando (eller klickar på exempelvis netscape-ikonen) så startas ett program. Så länge ett program körs så kallar man det en process, man skulle kunna säga att generellt gäller det att en UNIX process är en exekvering (man startar och kör ett program) av ett program eller kommando.
Det finns ett flertal olika kommandon som låter dig hantera processer som tillhör dig. Du kan inte göra något åt processer som tillhör någon annan användare (endast systemadministratörer kan hantera andras processer).
När man skriver in ett kommando i shellprompten (det fönster som man skriver kommandon i, t.ex. i en xterm), så forkar shellet en barnprocess i vilken kommandot exekveras. Med att forka så menar man att man skapar en ny process. Den nya processen (barnprocessen) är en exakt kopia av förälderprocessen, och den ärver alla attribut som tillhör förälderprocessen. (Om du inte förstår allt detta tekniska-mumbojumbo så gör det ingenting).Hur avbryter man en förgrundsprocess?
Förälderprocessen (shellet) väntar på att kommandot skall köras klart och att barnprocessen skall dö, barnprocessen dör automatiskt när den är klar. Fram tills dess kan man inte skriva in ett nytt kommando. Kommandon som körs på detta vis kallas förgrundsprocesser. Så fort kommandot är klart och barnprocessen är död så återaktiveras förälderprocessen, shellprompten återvänder, och användaren får möjlighet att skriva in ett nytt kommando.
För att avbryta den process som nu körs så trycker man följande knappkombinationHur pausar (suspenderar) man en förgrundsprocess?Ctrl-cDvs håll ner knappen markerat Ctrl och tryck sedan ned knappen markerat C. Detta avbryter den nuvarande förgrundsprocessen helt, den kommer helt enkelt att sluta att existera.
För att suspendera den process som nu körs så trycker man följande knappkombinationHur placerar jag en förgrundsprocess i bakgrunden?Ctrl-zDvs håll ner knappen markerat Ctrl och tryck sedan ned knappen markerat med Z. Detta suspenderar den nuvarande förgrundsprocessen.
Det första man måste göra är då är att suspenderar förgrundsprocessen, sedan så skriver man kommandot bg (background), för att flytta processen till bakgrunden.
För att köra en process i bakgrunden samt att man själv vill fortsätta jobba så lägger man till ett & på slutet av kommandot.
Exempel: (% är bara ett shellprompt-tecken, som EJ skall skrivas in)% Netscape & [1] 1234Detta gör att shellet forkar en barnprocess som kör kommandot och visa jobbnumret ([n]) samt PID (Process IDentifier). Shellprompten återvänder och man kan skriva fler kommandon.
Man skall inte köra interaktiva kommandon som kräver att man skriver något vid terminalen som ett bakgrundsjobb. Om man ändå gör det så kommer jobbet att stanna upp och vänta på användarinput. Då måste man döda processen som jobbet tillhör, alternativt sätta den till förgrunden och svara på efterfrågad inmatning.
De flesta shellen har inbyggt kommandon för att hantera bakgrundsjobb.Lista aktiva jobb
För att visa tillståndet hos eventuella bakgrundsjobb så använder man jobs kommandot.Ta fram jobb till förgrunden
Exempel:(% är bara ett shellprompt-tecken, som EJ skall skrivas in)% jobs [1] + Running xterm -g 90x55 [2] - Running xterm -g 90x55Detta visar jobbnummer, dess tillstånd samt vilket kommando som är associerat med olika jobb. För att visa PID så får man lägga till en -l option till jobs.
Exempel:(% är bara ett shellprompt-tecken, som EJ skall skrivas in)% jobs -l [1] + 3584 Running xterm -g 90x55 [2] - 3587 Running xterm -g 90x55
För att plocka fram ett specifikt jobb till förgrunden så utnyttjar man kommandot fg (foreground) följt av %jobbnummret (OBS. inget mellanslag mellan % och jobbnummret).
Exempel:(% först på raden är bara ett shellprompt-tecken, som EJ skall skrivas in)% jobs [1] + Running xterm -g 90x55 [2] - Running xterm -g 90x55 [3] Running lpr -Passi acc-text.ps % fg %3 lpr -Passi acc-text.psDetta gör att jobbet lpr kommer i förgrunden.
För att övervaka tillstånden hos processer så använder man kommandot psps [-option]I UNIX-världen så är icke-nödvändiga optioner till kommandon satta inom [].
Vilka options man kan använda beroende lite på vilken typ av UNIX-system man använder. För att vara på den säkra sidan så kan det vara klokt att läsa mansidan (en on-line referensmanual) till ps, den får man fram genom att skriva man ps.
Ett exempel på användandet av ps:(% är bara ett shellprompt-tecken, som EJ skall skrivas in)% ps -u användarnamn PID TTY TIME CMD 3800 pts/24 0:01 tcshresulterar i en lista över alla processer som ägs av användarnamn visas
Varje process som man startar upp blir ofta färdig inom några sekunder. Men ibland händer det att bakgrundsprocesser eller processer utan en kontrollerande terminal hänger sig, då måste man förstöra processen genom att döda den. För att döda en process så har man kommandot kill till sin hjälp.kill [-signal] processidentifierareI UNIX-världen så är icke-nödvändiga optioner till kommandon satta inom [].
För att få fram processidentifierare (PID) så använder vi kommandot ps som tidigare beskrivits.
Försök alltid först att döda en process med ett enkelt kill kommandokill processidentifierareDetta är det snyggaste sättet att döda en process, det har ungefär samma effekt som att avbryta en process.
Om det inte fungerar använd -1 signalenkill -1 processidentifierareDetta säger åt processen att "lägga på", precis som om du höll på att logga ut. Systemet försöker döda alla barnprocesser.
Som sista utväg så har vi -9 signalenkill -9 processidentifierareDetta slår ihjäl processen hårt och brutalt, dock så kan den lämna kvar eventuella barnprocesser som fortsätter att köra.
Det går även att kombinera optioner till kill kommandot.
Exempel:kill -9 -1Detta kill kommando dödar (stoppar) alla nu pågående processer som ägs av användaren som skriver kommandot.