Innledning
En Linux-server, som en hvilken som helst annen datamaskin du kan bli kjent med, kjører programmer. Til datamaskinen, må disse betraktes som «prosesser».
Mens Linux vil håndtere lavt nivå, bak-den-scener ledelse i en prosess som er life-cycle, trenger du en måte å samhandle med operativsystemet for å administrere det fra et høyere nivå.
I denne håndboken, vil vi diskutere noen enkle sider av prosessen ledelse. Linux gir en rikholdig samling av verktøy for dette formålet.,
Vi vil utforske disse ideene på en Ubuntu 12.04 VPS, men alle moderne Linux-distribusjon vil opererer på en lignende måte.
Hvordan for Å Vise Prosesser som Kjører på Linux
toppen
Den enkleste måten å finne ut hvilke prosesser som kjører på serveren din er å kjøre top
kommando:
top
Den øverste del av informasjon gir systemet statistikk, som for eksempel belastningen på systemet og det totale antall oppgaver.
Du kan lett se at det er 1 prosess, og 55 prosesser er sovende (aka ledig/ikke bruker CPU-ressurser).,
Den nederste delen har den kjørende prosesser og bruk av statistikk.
htop
En forbedret versjon av top
, kalt htop
, er tilgjengelig i kjeldene. Installere det med denne kommandoen:
sudo apt-get install htop
Hvis vi kjører htop
– kommandoen, vil vi se at det er en mer brukervennlig display:
htop
Du kan lære mer om hvordan du bruker topp og htop her.,
Hvordan Å Bruke ps-Listen Prosesser
Begge top
og htop
gi et fint grensesnitt for å vise kjørende prosesser som ligner på et grafisk oppgave manager.
Imidlertid disse verktøyene er ikke alltid fleksible nok tilstrekkelig til å dekke alle scenarier. En kraftig kommando som heter ps
er ofte svaret på disse problemene.,
Når kalte uten argumenter, utgang kan være litt mangel-glans:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Denne utgangen viser alle de prosesser som er knyttet til den aktuelle brukeren og terminal-økten. Dette gir mening fordi vi bare kjører bash
og ps
med denne terminalen for tiden.,
for Å få et mer fullstendig bilde av prosesser på dette systemet, kan vi kjøre følgende:
ps aux
Disse alternativene fortelle ps
for å vise prosesser som eies av alle brukere (uavhengig av deres terminal association) i et brukervennlig format.
for Å se en trevisningen, hvor hierarkisk forhold er illustrert, kan vi kjøre kommandoen med disse alternativene:
ps axjf
Som du kan se, prosessen kthreadd
er vist å være en forelder av ksoftirqd/0
– prosessen og andre.,
Et Notat Om Prosess-Id
I Linux-og Unix-lignende systemer, hver prosess er tilordnet en prosess-ID, eller HYDROGEN. Dette er hvordan operativsystemet identifiserer og holder orden på prosessene.
En rask måte å komme PID av en prosess som er med pgrep
kommando:
pgrep bash
1017
Dette vil rett og slett spørre prosess-ID og returnere det.
Den første prosessen gytt ved oppstart, kalt init, er gitt PID «1».,
pgrep init
1
Denne prosessen er deretter ansvarlig for gyting alle andre prosesser på systemet. De senere prosesser er gitt større PID tall.
En prosess som er forelder er den prosessen som var ansvarlig for gyting det. Overordnede prosesser har en PPID, som du kan se i kolonneoverskriftene i mange process management-programmer, blant annet top
, htop
og ps
.,
All kommunikasjon mellom brukeren og operativsystemet om prosesser som innebærer å oversette mellom prosess navn og Pid-på et tidspunkt under operasjonen. Dette er grunnen til verktøy fortelle deg PID.
Foreldre-Barn-Relasjoner
Opprette et barn prosessen skjer i to trinn: fork(), noe som skaper nye adressen plass og kopierer ressurser eid av morselskapet via kopi-på-skrive for å være tilgjengelig for barnet prosessen, og exec(), som laster en kjørbar inn adressen plass og utfører det.,
I det tilfelle at et barn prosessen dør før sin far, barnet blir en zombie til den av foreldrene har samlet inn informasjon om det eller det er angitt å kjernen at det ikke trenger denne informasjonen. Ressurser fra barnet prosessen vil da bli frigjort. Hvis den overordnede prosessen dør før barnet, men barnet vil bli vedtatt av init, men det kan også bli flyttet til en annen prosess.
Hvordan Å Sende Prosesser Signaler i Linux
Alle prosesser i Linux reagere på signaler. Signaler er en os-nivå måte å fortelle programmer til å avslutte eller endre sin atferd.,
Hvordan Å Sende Prosesser Signaler ved PID
Den mest vanlige måte for å formidle signaler til et program med kill
– kommandoen.
Som du kanskje forventer, standard funksjonalitet av dette verktøyet er å forsøke å drepe en prosess:
<før>
drepe <span class=»merke»>PIDoftarget_process</span>
</pre>
Dette sender SIKT signal til prosessen., BEGREPET signal som forteller om prosessen for å ta avslutte. Dette lar programmet til å utføre opprydning og avslutt jevnt.,
Hvis programmet ikke fungerer som den skal og ikke avslutte når det er gitt BEGREPET signal, vi kan eskalere signal ved å sende KILL
signal:
<før>
kill -KILL <span class=»merke»>PIDoftarget_process</span>
</pre>
Dette er et spesielt signal om at det ikke er sendt til programmet.,
i Stedet, det er gitt til operativsystem kernel, som avsluttes prosessen. Dette brukes til å omgå programmer som ignorerer signalene som sendes til dem.
Hvert signal har en tilhørende nummer som kan sendes i stedet for navn. Du kan For eksempel pass «-15» i stedet for «SIKT», og «-9» i stedet for «-KILL».
Hvordan Å Bruke Signaler For Andre Formål
Signaler er ikke bare brukes til å slå ned programmer. De kan også brukes til å utføre andre handlinger.
For eksempel, mange daemoner vil starte på nytt når de er gitt HUP
, eller du kan henge opp signalet., Apache er ett program som fungerer som dette.
<før>
sudo drepe -HUP <span class=»merke»>pidofapache</span>
</pre>
– kommandoen ovenfor vil føre til Apache å laste sin konfigurasjonsfil, og fortsette å tjene innhold.,
Du kan liste opp alle signaler om at det er mulig å sende med drepe ved å skrive:
kill -l
Hvordan Å Sende Prosesser Signaler ved Navn
Selv om den konvensjonelle måten å sende signaler er gjennom bruk av Pid, det finnes også metoder for å gjøre dette med vanlige prosessen navn.,
pkill
– kommandoen fungerer i nesten nøyaktig samme måte som kill
, men den opererer på en prosess som navn i stedet:
pkill -9 ping
– kommandoen ovenfor, tilsvarer:
kill -9 `pgrep ping`
Hvis du ønsker å sende et signal til hver forekomst av en bestemt prosess, kan du bruke killall
kommando:
killall firefox
– kommandoen ovenfor vil sende BEGREPET signal til hver forekomst av firefox som kjører på datamaskinen.,
Hvordan for Å Justere Prosessen Prioriteringer
Ofte, vil du ønsker å justere hvilke prosesser som er gitt prioritet i en server-miljø.
Noen prosesser som kan betraktes som kritiske for din situasjon, mens andre kan bli henrettet når det kan være leftover ressurser.
Linux-kontroller prioritert gjennom en verdi som kalles niceness.
Høyt prioriterte oppgaver er ansett som mindre fint, fordi de ikke dele ressurser, så vel. Lav prioritet prosesser, på den annen side, er fint fordi de insisterer på å kun ta minimalt med ressurser.,
Når vi kjørte top
i begynnelsen av artikkelen, var det en kolonne merket «NI». Dette er den fin verdi av prosessen:
top
Fin verdiene kan variere mellom «-19/-20» (høyest prioritet) og «19/20» (lavest prioritet), avhengig av 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=»merke»>PIDtoprioritize</span>
</pre>
Merk: Mens hyggelig opererer med en kommando navn av nødvendighet, renice opererer ved å ringe prosessen PID
Konklusjon
Process management er et tema som er noen ganger vanskelig for nye brukere å forstå fordi verktøyene som brukes er forskjellig fra deres grafisk kolleger.,
Imidlertid ideer er kjent og intuitiv, og med litt trening, vil bli naturlig. Fordi prosessene som er involvert i alt du gjør med en datamaskin, lære hvordan du effektivt styre dem er en viktig ferdighet.
<div class=»forfatter»>Av Justin Ellingwood</div>
Leave a Reply