processes unix process control
Processstyring i Unix:
I Unix udføres alle instruktionerne uden for kernen i forbindelse med en proces.
En proces er en sekvens af instruktioner, og hver proces har en blok med kontrollerede data tilknyttet. Processer kan manipuleres på en måde, der ligner, hvordan filer kan manipuleres.
For eksempel, som 'ls' er kan bruges til at se listen over filer, kan 'ps' bruges til at se listen over processer.
Unix-video nr. 23:
I denne vejledning dækker vi, hvilken procesrelateret information der er gemt, og beskriver også nogle kommandoer, der bruges til at styre processer. Vi giver også en kort beskrivelse af, hvordan kommandoscripts kan debugges.
Hvad du lærer:
Unix-procesoplysninger
Processetabellen indeholder oplysninger om alle de processer, der kører i øjeblikket. Hovedformålet med denne tabel er at styre alle kørende processer effektivt.
softwarekvalitetssikring inden for softwareteknik
Bemærk: Som et multitasking- og multi-user OS vil Unix have mange processer, der kører på samme tid.
Tabellen indeholder information som:
- Proces-id
- Forældreproces-id
- Processernes tilstand
- CPU brug
Processer i Unix gennemgår forskellige tilstande afhængigt af forskellige omstændigheder. Tilstandsændringerne kan udløses af, om en proces skal vente på, at en læse- eller skriveoperation er afsluttet, eller når en anden mere presserende proces skal gives en chance for at køre.
Processtyringskommandoer
Der er en række kommandoer, der er tilgængelige til gennemgang og manipulation af processer. Kommandoen ‘ps’ kan bruges til at få vist processtatusoplysninger.
Kommando | ps - giver information om alle de processer, der kører i øjeblikket. |
---|---|
Almindelig syntaks | $ ps (VALGMULIGHEDER) |
Eksempel 1 | $ ps Giver information om processen inklusive PID, terminalnavn, tidspunkt for oprettelse og navn på processerne. |
Som diskuteret i en tidligere tutorial kan processer klassificeres som forgrund, baggrund eller dæmon. Når en kommando køres fra terminalen, kører den normal i forgrunden. For at køre en proces i baggrunden kan knappen '&' i slutningen af kommandoen bruges.
Eksempel:
$ grep “how” file1 > file2 &
Denne kommando søger efter linjerne, der indeholder mønsteret 'hvordan', og gemmer output i fil2. Hvis fil1 er rimelig stor, vil vi muligvis fortsætte med andre handlinger og køre denne kommando i baggrunden. Med '&' i slutningen kører denne kommando som en proces i baggrunden.
Det er muligt at suspendere en forgrundsproces ved hjælp af kommandoen ‘^ Z’. Denne kommando flytter den nuværende forgrundsproces til en suspenderet tilstand i baggrunden. Derefter kan processen enten skubbes til at genoptage i baggrunden ved hjælp af kommandoen 'bg', eller den kan bringes tilbage til forgrunden ved hjælp af kommandoen 'fg'.
Hver proces er også forbundet med en prioritet. Dette bruges til at sikre, at operativsystemet er i stand til rimeligt at tildele tid til forskellige behandlingsopgaver. Den 'nice' kommando kan bruges til at reducere prioriteten for en proces og dermed være 'nice' til de andre processer, dvs.
$ dejligt
Denne linje kører den angivne kommando med en lavere prioritet - som standard reduceres prioriteten med 10. Kommandoen tager også en parameter, der kan bruges til at bruge et andet niveau af 'pænhed'.
Eksempel:
$ nice -20 ls
Denne kommando kører 'ls' med prioriteten reduceret med 20.
Det er også muligt at øge prioriteten med en negativ 'pænhed'. Dette kræver dog tilladelse fra superbruger.
Når en terminal eller login-session lukkes, sender den SIGHUP-signalet til børneprocesser. Som standard får dette signal barnets processer til at afslutte. Kommandoen 'nohup' kan bruges til at lade kommandoer fortsætte med at køre, selv når login-sessionen afsluttes.
Eksempel:
$ nohup soft file1 > file2
Med denne kommando vil sortering af file1 og gemme i file2-processen fortsætte, selvom vi er logget ud af systemet.
Kommandoen 'kill' kan bruges til at afslutte enhver af processerne afhængigt af tilladelser.
Eksempel:
$ kill (options)
Denne kommando afslutter en proces med proces-id'et. PID'en for en proces kan opnås ved hjælp af kommandoen ‘ps’.
Denne 'at' kommando bruges til at udføre kommandoer på en bestemt dato og et bestemt tidspunkt i fremtiden.
Eksempel:
$ at 8pm sort file1>file2
Unix debugging
Unix giver en række mekanismer til at hjælpe med at finde fejl i dine kommandoscript. Disse mekanismer kan bruges til at se et spor af, hvad der udføres, dvs. den rækkefølge, hvor kommandoer udføres. Sporingen kan bruges til at forstå og verificere scriptets logik og kontrolflow.
=> sæt -v
detaljeret tilstand: Indstilling af denne mulighed, før du kører en kommando, vil sikre, at den kommando, der udføres, udskrives til stdout, før den faktisk udføres.
=> sæt -x
eksekveringssporingstilstand: Indstilling af denne indstilling viser hver kommando, når den udføres sammen med dens argumenter.
=> sæt -n
no-exec-tilstand: Indstilling af denne indstilling viser eventuelle fejl uden faktisk at køre nogen kommandoer.
Se vores kommende tutorial for at vide mere om Avanceret Shell Scripting.
PREV-vejledning | NÆSTE vejledning
Anbefalet læsning
- Unix behandler kontrolkommandoer som Ps og Top (del C)
- Unix-kommandoer: Grundlæggende og avancerede Unix-kommandoer med eksempler
- Unix tekstbehandlingskommandoer: Unix-filtre med eksempler
- Unix Pipes Tutorial: Pipes in Unix Programming
- Mere Unix-filter og Awk, Sed-kommandoer i tekstbehandling
- Kommandolinjeargumenter i Unix Shell Script med eksempel
- UNIX-tutorial til begyndere (20+ dybdegående Unix-træningsvideoer)
- Sådan sammenlignes to filer i Unix: kommandoer til filsammenligning