introduktion
en Linu. – server, som enhver anden computer, du måske er bekendt med, kører applikationer. Til computeren betragtes disse som”processer”.
mens Linu.vil håndtere det lave niveau bag kulisserne i en proces livscyklus, har du brug for en måde at interagere med operativsystemet for at styre det fra et højere niveau.
i denne vejledning vil vi diskutere nogle enkle aspekter af processtyring. Linu.giver en rigelig samling af værktøjer til dette formål.,
Vi vil udforske disse ideer på en Ubuntu 12.04 VPS, men enhver moderne Linu. – distribution fungerer på en lignende måde.
Hvordan til At Se Kørende Processer i Linux
top
Den nemmeste måde at finde ud af, hvilke processer, der kører på din server for at køre top
kommando:
top
Den bedste bid af oplysninger, give system, statistikker, såsom systembelastning, og det samlede antal opgaver.
Du kan nemt se, at der er 1 kørende proces, og 55 processer sover (aka inaktiv / ikke bruger CPU-ressourcer).,
den nederste del har de kørende processer og deres brugsstatistikker.
htop
En forbedret version af top
, kaldet htop
, der er tilgængelige i arkiver. Installere det med denne kommando:
sudo apt-get install htop
Hvis vi kører htop
kommando, vil vi se, at der er mere brugervenligt display:
htop
Du kan få mere at vide om, hvordan du bruger top og htop her.,
Sådan bruges ps til at liste processer
begge top
og htop
giv en dejlig grænseflade til at se kørende processer, der ligner en grafisk task manager.
disse værktøjer er imidlertid ikke altid fleksible nok til at dække alle scenarier tilstrækkeligt. En kraftfuld kommando kaldet ps
er ofte svaret på disse problemer.,
Når der bliver kaldt uden argumenter, udgang kan være en smule mangel-glans:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Denne udgang viser alle de processer, der er forbundet med den aktuelle bruger, og terminal session. Dette giver mening, fordi vi kun kører bash
og ps
med denne terminal i øjeblikket.,
til At få et mere komplet billede af de processer, der er på dette system, kan vi køre følgende:
ps aux
Disse indstillinger fortælle ps
for at vise processer, som ejes af alle brugere (uanset deres terminal association) i et brugervenligt format.
for At se en trævisning, hvor hierarkisk relationer er illustreret, kan vi køre kommandoen med disse indstillinger:
ps axjf
Som du kan se, processen kthreadd
er vist at være en forælder i ksoftirqd/0
processen og de andre.,
en Note om Proces-id ‘ er
i Linu. – og Uni. – lignende systemer tildeles hver proces et Proces-ID eller PID. Sådan identificerer og holder styr på processer.
En hurtig måde at få en proces ‘ PID er med pgrep
kommando:
pgrep bash
1017
Dette vil blot forespørgsel proces-ID og returnere det.
den første proces, der opstår ved opstart, kaldet init, får PID ‘ en “1”.,
pgrep init
1
denne proces er derefter ansvarlig for gydning af enhver anden proces på systemet. De senere processer er givet større PID tal.
en proces forælder er den proces, der var ansvarlig for at gyde det. Overordnede processer har en PPID, som du kan se i kolonneoverskrifterne i mange process management-programmer, herunder top
htop
og ps
.,
enhver kommunikation mellem brugeren og operativsystemet om processer involverer oversættelse mellem procesnavne og PID ‘ er på et tidspunkt under operationen. Dette er grunden til hjælpeprogrammer fortælle dig PID.
Forældre-Barn-Forhold
Skaber et barn processen sker i to trin: fork(), som opretter nye adresse rum og kopier de ressourcer, der ejes af moderselskabet via copy-on-write til at være til rådighed for barnet, og exec(), som indlæser en eksekverbar fil til den adresse, der er plads og udfører det.,
i tilfælde af, at et barn proces dør før sin forælder, barnet bliver en .ombie, indtil den forælder har indsamlet oplysninger om det eller angivet til kernen, at det ikke har brug for disse oplysninger. Ressourcerne fra børneprocessen frigøres derefter. Hvis forældreprocessen dør før barnet, imidlertid, barnet vil blive adopteret af init, skønt det også kan omfordeles til en anden proces.
Sådan sendes Processesignaler i Linu.
alle processer i Linu. reagerer på signaler. Signaler er en os-niveau måde at fortælle programmer til at afslutte eller ændre deres adfærd.,
Sådan sendes Processsignaler med PID
den mest almindelige måde at sende signaler til et program er med kommandoen kill
.
Som du kan forvente, standard funktionaliteten af dette værktøj, er at forsøge at dræbe en proces:
<før>
dræbe <span class=”highlight”>PIDoftarget_process</span>
</pre>
Dette sender SIGT signal til processen., Udtrykket signal fortæller processen for at afslutte. Dette gør det muligt for programmet at udføre oprydningsoperationer og afslutte jævnt.,
Hvis programmet er ikke makker ret og ikke forlade hvis der gives UDTRYK signal, vi kan eskalere signalet passerer KILL
signal:
<før>
dræb -DRÆB <span class=”highlight”>PIDoftarget_process</span>
</pre>
Dette er et særligt signal, der er ikke sendt til programmet.,
i stedet gives det til operativsystemets kerne, som lukker processen ned. Dette bruges til at omgå programmer, der ignorerer de signaler, der sendes til dem.
hvert signal har et tilknyttet nummer, der kan sendes i stedet for navnet. For eksempel kan du passere “-15” i stedet for “-TERM” og “-9” i stedet for “-KILL”.
Sådan bruges signaler til andre formål
signaler bruges ikke kun til at lukke programmer. De kan også bruges til at udføre andre handlinger.for eksempel vil mange dæmoner genstarte, når de får HUP
, eller hang-Up signal., Apache er et program, der fungerer som dette.
<før>
sudo kill-HUP <span class=”highlight”>pidofapache</span>
</pre>
ovenstående kommando vil få Apache til at genindlæse den konfiguration af fil-og genoptage tjener indhold.,
Du kan liste alle de signaler, der er mulige at sende med at dræbe ved at skrive:
kill -l
Hvordan til At Sende Processer Signaler ved Navn
Selv om den konventionelle måde at sende signaler, er gennem brug af Pid ‘ er, der er også metoder til at gøre dette med regelmæssige proces navne.,
pkill
kommandoen fungerer i næsten nøjagtig samme måde som kill
, men det fungerer på en proces navn i stedet:
pkill -9 ping
ovenstående kommando svarer til:
kill -9 `pgrep ping`
Hvis du ønsker at sende et signal til hver forekomst af en bestemt proces, kan du bruge killall
kommando:
killall firefox
ovenstående kommando vil sende SIGT signal til hver forekomst af firefox, der kører på computeren.,
Sådan justeres Procesprioriteter
ofte vil du gerne justere, hvilke processer der prioriteres i et servermiljø.nogle processer kan betragtes som missionskritiske for din situation, mens andre kan udføres, når der kan være resterende ressourcer.
Linu.styrer prioritet gennem en værdi kaldet niceness.
opgaver med høj prioritet betragtes som mindre pæne, fordi de ikke også deler ressourcer. Processer med lav prioritet er på den anden side dejlige, fordi de insisterer på kun at tage minimale ressourcer.,
da vi løb top
i begyndelsen af artiklen var der en kolonne mærket “NI”. Det er nice-værdien af processen:
top
Nice-værdier kan variere mellem “-19/-20” (højeste prioritet) og “19/20” (laveste prioritet), afhængigt af systemet.,
To run a program with a certain nice value, we can use the nice
command:
<pre>
nice -n 15 <span class=”highlight”>commandtoexecute</span>
</pre>
This only works when beginning a new program.,=”9b4b74b24a”>:
<før>
renice 0 <span class=”highlight”>PIDtoprioritize</span>
</pre>
Bemærk: Mens godt opererer med en kommando navn af nødvendighed, renice fungerer ved at kalde den proces PID
Konklusion
Process management er et emne, der er nogle gange svært for nye brugere til at forstå, fordi de værktøjer, der anvendes, er forskellige fra deres grafiske kolleger.,
men ideerne er velkendte og intuitive, og med lidt øvelse bliver de naturlige. Fordi processer er involveret i alt, hvad du gør med et computersystem, er det en vigtig færdighed at lære at kontrollere dem effektivt.
<div class=”author”>Af Justin Ellingwood</div>
Leave a Reply