Introducere
un server Linux, ca orice alt computer pe care îl cunoașteți, rulează aplicații. Pentru computer, acestea sunt considerate „procese”.
în timp ce Linux se va ocupa de managementul de nivel scăzut, în spatele scenei, în ciclul de viață al unui proces, veți avea nevoie de o modalitate de a interacționa cu sistemul de operare pentru a-l gestiona de la un nivel superior.în acest ghid, vom discuta câteva aspecte simple ale managementului proceselor. Linux oferă o colecție abundentă de instrumente în acest scop.,vom explora aceste idei pe un Ubuntu 12.04 VPS, dar orice distribuție Linux modernă va funcționa într-un mod similar.cel mai simplu mod de a afla ce procese rulează pe serverul dvs. este să rulați comanda top
:
top
partea de sus a informațiilor oferă statistici de sistem, cum ar fi încărcarea sistemului și numărul total de sarcini.puteți vedea cu ușurință că există 1 proces de rulare și 55 de procese dorm (aka inactiv/nu utilizează resurse CPU).,
partea de jos are procesele care rulează și statisticile lor de utilizare.
htop
O versiune îmbunătățită a top
, numit htop
, este disponibil în depozite. Instalați-l cu această comandă:
sudo apt-get install htop
Dacă vom rula htop
comanda, vom vedea că există o mult mai user-friendly display:
htop
puteți afla mai multe despre cum să utilizați sus și htop aici.,
Cum Să Utilizați ps la Lista de Procese
Ambele top
și htop
oferă o interfață frumos pentru a vizualiza procesele similare cu o grafică task manager.cu toate acestea, aceste instrumente nu sunt întotdeauna suficient de flexibile pentru a acoperi în mod adecvat toate scenariile. O comandă puternică numită ps
este adesea răspunsul la aceste probleme.,
atunci Când este solicitat, fără argumente, de ieșire poate fi un pic lipsa-luciu:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Acest rezultat arată toate procesele asociate cu utilizatorul curent și o sesiune de terminal. Acest lucru are sens, deoarece suntem doar rulează bash
și ps
cu acest terminal în prezent.,
Pentru a obține o imagine mai completă a proceselor pe acest sistem, putem efectua urmatoarele:
ps aux
Aceste opțiuni spune ps
pentru a afișa procesele deținute de către toți utilizatorii (indiferent de terminalul de asociere) într-un format ușor de utilizat.
Pentru a vedea o vizualizare copac, unde ierarhica relații sunt ilustrate, putem rula comanda cu aceste opțiuni:
ps axjf
după Cum puteți vedea, procesul kthreadd
este indicat pentru a fi un părinte al ksoftirqd/0
proces și pe ceilalți.,
o notă despre ID-urile de proces
în sistemele Linux și Unix, fiecărui proces i se atribuie un ID de proces sau PID. Acesta este modul în care sistemul de operare identifică și ține evidența proceselor.
O modalitate rapidă de a obține PID-ul unui proces este cu pgrep
command:
pgrep bash
1017
Acest lucru va pur și simplu de interogare ID-ul de proces și să se întoarcă.
primul proces a dat naștere la boot, numit init, este dat PID de „1”.,
pgrep init
1
Acest proces este responsabil pentru depunerea icrelor fiecare alt proces pe sistemul. Procesele ulterioare primesc numere PID mai mari.
părintele unui proces este procesul care a fost responsabil pentru reproducerea acestuia. Părinte procese au o PPID, pe care o puteți vedea în anteturile de coloană în multe gestionarea procesului de aplicații, inclusiv top
, htop
și ps
., orice comunicare între utilizator și sistemul de operare despre procese implică traducerea între numele proceselor și PID-uri la un moment dat în timpul operației. Acesta este motivul pentru utilități vă spun PID.
relații părinte-copil
crearea unui proces copil are loc în doi pași: fork(), care creează un nou spațiu de adrese și copiază resursele deținute de părinte prin copy-on-write pentru a fi disponibile procesului copil; și exec(), care încarcă un executabil în spațiul de adrese și îl execută., în cazul în care un proces copil moare înaintea părintelui său, copilul devine un zombie până când părintele a colectat informații despre acesta sau a indicat kernelului că nu are nevoie de aceste informații. Resursele din procesul copilului vor fi apoi eliberate. Dacă procesul părinte moare înaintea copilului, copilul va fi adoptat de init, deși poate fi, de asemenea, realocat unui alt proces.
cum să trimiteți semnale de procese în Linux
toate procesele din Linux răspund la semnale. Semnalele sunt o modalitate la nivel de sistem de operare de a spune programelor să-și înceteze sau să-și modifice comportamentul.,
cum să trimiteți semnale de procese prin PID
cel mai obișnuit mod de a transmite semnale către un program este cu comanda kill
.
Ca s-ar putea aștepta, funcționalitatea implicită a acestui utilitar este de a încerca să ucidă un proces:
<pre>
ucide <span class=”highlight”>PIDoftarget_process</span>
</pre>
Aceasta trimite semnalul TERMEN lung a procesului., Termenul semnal spune procesul de a vă rugăm să rezilieze. Acest lucru permite programului să efectueze operații de curățare și să iasă fără probleme.,
în Cazul în care programul este incorect și nu de ieșire, atunci când a dat semnalul TERMEN lung, putem escalada semnalul prin trecerea KILL
semnal:
<pre>
ucide -UCIDE <span class=”highlight”>PIDoftarget_process</span>
</pre>
Acesta este un semnal special care nu este trimis la program.,
în schimb, este dat kernelului sistemului de operare, care oprește procesul. Acest lucru este folosit pentru a ocoli programele care ignoră semnalele trimise acestora.fiecare semnal are un număr asociat care poate fi trecut în locul numelui. De exemplu, puteți trece „-15 „în loc de”- termen „și” -9 „în loc de”- ucide”.
cum se utilizează semnalele în alte scopuri
semnalele nu sunt utilizate numai pentru a închide programele. Ele pot fi, de asemenea, folosite pentru a efectua alte acțiuni.
de exemplu, mulți demoni vor reporni când li se va da HUP
, sau semnalul de închidere., Apache este un program care funcționează astfel.
<pre>
sudo kill-HUP <span class=”highlight”>pidofapache</span>
</pre>
comanda De mai sus va provoca Apache pentru a reîncărca fișierul său de configurare și a relua de servire conținut.,
puteți lista toate semnalele care sunt posibil de a trimite cu omor prin tastarea:
kill -l
Cum de A Trimite Procesele de Semnale prin Nume
Deși modul convențional de a trimite semnale este prin utilizarea de Pid-uri, există, de asemenea metode de a face cu acest proces regulat de nume.,
pkill
comandă funcționează în exact același mod ca kill
, dar acesta funcționează pe un proces de schimb numele:
pkill -9 ping
comanda De mai sus este echivalentă cu:
kill -9 `pgrep ping`
Dacă doriți să trimite un semnal la fiecare instanță a unui anumit proces, puteți utiliza killall
command:
killall firefox
comanda De mai sus va trimite pe TERMEN semnal pentru fiecare exemplu de firefox care rulează pe calculator.,
cum să ajustați prioritățile procesului
de multe ori, veți dori să ajustați ce procese au prioritate într-un mediu de server.unele procese pot fi considerate critice pentru situația dvs., în timp ce altele pot fi executate ori de câte ori ar putea exista resurse rămase.
Linux controlează prioritatea printr-o valoare numită niceness.sarcinile cu prioritate ridicată sunt considerate mai puțin plăcute, deoarece nu împărtășesc și resurse. Procesele cu prioritate scăzută, pe de altă parte, sunt plăcute, deoarece insistă să ia doar resurse minime.,
când am rulat top
la începutul articolului, a existat o coloană marcată”NI”. Acest lucru este frumos valoarea de proces:
top
Frumos valori pot varia între „-19/-20” (cea mai mare prioritate) și „19/20” (prioritate minimă), în funcție de sistem.,
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>
bazat pe kernelul 0 <span class=”highlight”>PIDtoprioritize</span>
</pre>
Notă: în Timp ce frumos operează cu un nume de comandă sau de necesitate, bazat pe kernelul operează prin apelarea procesului PID
Concluzie
Procesul de management este un subiect care este uneori dificil pentru utilizatorii noi să înțeleagă că instrumentele folosite sunt diferite de omologii lor grafică.,cu toate acestea, ideile sunt familiare și intuitive și, cu puțină practică, vor deveni naturale. Deoarece procesele sunt implicate în tot ceea ce faci cu un sistem informatic, învățarea cum să le controlezi eficient este o abilitate esențială.
<div class=”autor”>De Justin Ellingwood</div>
Leave a Reply