Inleiding
een Linux server draait, net als elke andere computer waarmee je bekend bent, toepassingen. Voor de computer worden deze beschouwd als “processen”.
hoewel Linux het beheer achter de schermen van een proces op een laag niveau afhandelt, heb je een manier van interactie met het besturingssysteem nodig om het vanaf een hoger niveau te beheren.
in deze gids zullen we enkele eenvoudige aspecten van procesbeheer bespreken. Linux biedt een overvloedige verzameling tools voor dit doel.,
We zullen deze ideeën verkennen op een Ubuntu 12.04 VPS, maar elke moderne Linux-distributie zal op dezelfde manier werken.
draaiende processen in Linux
top
de makkelijkste manier om erachter te komen welke processen op uw server draaien is door het uitvoeren van de top
Commando:
top
het bovenste deel van de informatie geeft systeemstatistieken, zoals systeembelasting en het totale aantal taken.
u kunt gemakkelijk zien dat er 1 lopend proces is, en 55 processen slapen (aka idle/geen CPU-bronnen gebruiken).,
het onderste gedeelte bevat de lopende processen en hun gebruiksstatistieken.
htop
een verbeterde versie van top
, genaamd htop
, is beschikbaar in de repositories. Installeer het met het volgende commando:
sudo apt-get install htop
als we het commando htop
uitvoeren, zullen we zien dat er een gebruiksvriendelijker display is:
htop
u kunt hier meer lezen over het gebruik van top en htop.,
hoe ps te gebruiken voor het weergeven van processen
beide top
en htop
bieden een mooie interface om lopende processen te bekijken die vergelijkbaar zijn met een grafische taakbeheerder.
Deze tools zijn echter niet altijd flexibel genoeg om alle scenario ‘ s adequaat te dekken. Een krachtig commando genaamd ps
is vaak het antwoord op deze problemen.,
indien aangeroepen zonder argumenten, kan de uitvoer een Bit lack-luster zijn:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
deze uitvoer toont alle processen die geassocieerd zijn met de huidige gebruiker en terminal sessie. Dit is logisch omdat we op dit moment alleen bash
en ps
met deze terminal draaien.,
om een completer beeld te krijgen van de processen op dit systeem, kunnen we het volgende uitvoeren:
ps aux
Deze opties vertellen ps
om processen te tonen die eigendom zijn van alle gebruikers (ongeacht hun terminalassociatie) in een gebruiksvriendelijk formaat.
om een boomstructuur te zien, waarin hiërarchische relaties worden geïllustreerd, kunnen we het volgende commando uitvoeren:
ps axjf
zoals u kunt zien, is het proces kthreadd
een ouder van het ksoftirqd/0
proces en de anderen.,
een notitie over proces-id ‘ s
In Linux en Unix-achtige systemen wordt aan elk proces een proces-ID of PID toegewezen. Dit is hoe het besturingssysteem identificeert en houdt van processen.
een snelle manier om de PID van een proces te verkrijgen is met het pgrep
Commando:
pgrep bash
1017
Dit zal eenvoudig het proces-ID opvragen en retourneren.
het eerste proces dat tijdens het opstarten wordt opgestart, genaamd init, krijgt de PID van “1”.,
pgrep init
1
Dit proces is dan verantwoordelijk voor het opstarten van elk ander proces op het systeem. De latere processen krijgen grotere PID-nummers.
de ouder van een proces is het proces dat verantwoordelijk was voor het voortbrengen ervan. Bovenliggende processen hebben een PPID, die u kunt zien in de kolomkoppen in veel procesbeheertoepassingen, waaronder top
, htop
en ps
.,
elke communicatie tussen de gebruiker en het besturingssysteem over processen vereist het vertalen tussen procesnamen en PID ‘ s op een bepaald moment tijdens de operatie. Dit is waarom utilities je de PID vertellen.
Ouder-Kind relaties
het maken van een dochterproces gebeurt in twee stappen: fork(), die nieuwe adresruimte maakt en de bronnen van de ouder kopieert via copy-on-write om beschikbaar te zijn voor het dochterproces; en exec(), die een uitvoerbaar bestand in de adresruimte laadt en het uitvoert.,
in het geval dat een dochterproces sterft voordat zijn ouder plaatsvindt, wordt het kind een zombie totdat de ouder informatie over het proces heeft verzameld of aan de kernel heeft aangegeven dat het die informatie niet nodig heeft. De middelen van het dochterproces zullen dan worden vrijgemaakt. Als het ouderproces echter vóór het kind sterft, zal het kind door init worden geadopteerd, hoewel het ook aan een ander proces kan worden toegewezen.
hoe processen signalen in Linux te verzenden
alle processen in Linux reageren op signalen. Signalen zijn een os-niveau manier om programma ‘ s te vertellen om hun gedrag te beëindigen of te wijzigen.,
hoe processen signalen te verzenden met PID
de meest voorkomende manier om signalen door te geven aan een programma is met het kill
Commando.
Zoals je zou verwachten, is de standaard functionaliteit van dit programma is om te proberen om te doden van een proces:
<pre>
kill <span class=”highlight”>PIDoftarget_process</span>
</pre>
Deze stuurt het TERM signaal naar het proces., De TERM Signaal vertelt het proces om te beëindigen. Dit stelt het programma in staat om schoonmaak operaties uit te voeren en soepel af te sluiten.,
Als het programma onverwacht gedrag vertoont en niet af te sluiten wanneer de TERM signaal, we kunnen escaleren van het signaal door het doorgeven van de KILL
signaal:
<pre>
kill -KILL <span class=”highlight”>PIDoftarget_process</span>
</pre>
Dit is een speciaal signaal dat wordt verzonden naar het programma.,
in plaats daarvan wordt het gegeven aan de kernel van het besturingssysteem, die het proces afsluit. Dit wordt gebruikt om programma ‘ s te omzeilen die de signalen negeren die naar hen worden verzonden.
elk signaal heeft een geassocieerd nummer dat kan worden doorgegeven in plaats van de naam. Je kunt bijvoorbeeld “-15” doorgeven in plaats van “-TERM”, en “-9” in plaats van “-KILL”.
hoe signalen voor andere doeleinden te gebruiken
signalen worden niet alleen gebruikt om programma ‘ s af te sluiten. Ze kunnen ook worden gebruikt om andere acties uit te voeren.
bijvoorbeeld, veel daemons zullen herstarten wanneer ze het HUP
krijgen, of een ophangsignaal., Apache is een programma dat zo werkt.
<pre>
sudo kill-HUP <span class=”highlight”>pidofapache</span>
</pre>
Het bovenstaande commando zal leiden tot Apache instellingen opnieuw in moet lezen bestand en hervat het aanbieden van inhoud.,
u kunt een lijst maken van alle signalen die mogelijk zijn om te verzenden met kill door het typen van:
kill -l
Hoe verzendt u processen signalen op naam
hoewel de conventionele manier om signalen te verzenden is door het gebruik van PID ‘ s, zijn er ook methoden om dit te doen met reguliere procesnamen.,
het commando pkill
werkt op vrijwel dezelfde manier als kill
, maar werkt in plaats daarvan op een procesnaam:
pkill -9 ping
het bovenstaande commando is het equivalent van:
kill -9 `pgrep ping`
als u een signaal wilt verzenden naar elke instantie van een bepaald proces, kunt u de opdracht killall
gebruiken:
killall firefox
het bovenstaande commando stuurt het Term signaal naar elke instantie van Firefox die op de computer draait.,
hoe de Procesprioriteiten aan te passen
vaak wilt u aanpassen welke processen prioriteit krijgen in een serveromgeving.
sommige processen kunnen als bedrijfskritisch voor uw situatie worden beschouwd, terwijl andere processen kunnen worden uitgevoerd wanneer er mogelijk nog middelen over zijn.
Linux bestuurt prioriteit door middel van een waarde genaamd niceness.
taken met hoge prioriteit worden als minder mooi beschouwd, omdat ze ook geen bronnen delen. Lage prioriteit processen, aan de andere kant, zijn leuk omdat ze aandringen op slechts minimale middelen.,
toen we top
aan het begin van het artikel uitvoerden, was er een kolom gemarkeerd met “NI”. Dit is de nice-waarde van het proces:
top
Nice-waarden kunnen variëren tussen “-19/-20” (hoogste prioriteit) en “19/20” (LAAGSTE prioriteit), afhankelijk van het systeem.,
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”>:
<pre>
renice 0 <span class=”highlight”>PIDtoprioritize</span>
</pre>
Let op: Terwijl u lekker actief met de naam van een opdracht door de noodzakelijkheid, renice werkt door het aanroepen van de proces PID
Conclusie
Process management is een onderwerp dat soms moeilijk is voor nieuwe gebruikers om greep te krijgen omdat de instrumenten die gebruikt worden zijn verschillend van hun grafische collega ‘ s.,
echter, de ideeën zijn vertrouwd en intuïtief, en met een beetje oefening, zal natuurlijk worden. Omdat processen betrokken zijn bij alles wat je doet met een computersysteem, is het leren hoe je ze effectief kunt beheersen een essentiële vaardigheid.
<div class= “author” >door Justin Ellingwood< / div>
Leave a Reply