Úvod
Linux server, stejně jako jakékoliv jiné počítače, můžete být obeznámeni s, se spouští aplikace. K počítači se jedná o „procesy“.
Zatímco Linux bude zvládnout na nízké úrovni, behind-the-scenes řízení v procesu životního cyklu, budete potřebovat způsob, jak komunikovat s operačním systém řízení z vyšší úrovně.
v této příručce Budeme diskutovat o některých jednoduchých aspektech řízení procesů. Linux poskytuje bohatou sbírku nástrojů pro tento účel.,
tyto nápady prozkoumáme na Ubuntu 12.04 VPS, ale jakákoli moderní distribuce Linuxu bude fungovat podobným způsobem.
Jak Zobrazit Spuštěné Procesy v Linuxu
nejjednodušší způsob, jak zjistit, jaké procesy jsou spuštěny na serveru spustit top
příkaz:
top
horní část informace dát systém statistiky, jako je zatížení systému a celkový počet úkolů.
můžete snadno vidět, že existuje 1 běžící proces a 55 procesů spí (aka idle/nepoužívá zdroje CPU).,
spodní část má spuštěné procesy a statistiky jejich využití.
htop
vylepšená verze top
htop
, je k dispozici v repozitářích. Nainstalujte ho pomocí tohoto příkazu:
sudo apt-get install htop
Když jsme se spustit htop
příkaz, budeme vidět, že tam je více uživatelsky přátelský displej:
htop
můžete se dozvědět více o tom, jak používat top a htop.,
Jak Používat ps k Seznamu Procesů
top
htop
poskytují příjemné rozhraní pro zobrazení běžících procesů podobný grafický správce úloh.
tyto nástroje však nejsou vždy dostatečně flexibilní, aby adekvátně pokryly všechny scénáře. Silný příkaz s názvem ps
je často odpovědí na tyto problémy.,
Při volání bez argumentů, výstup může být trochu nedostatek-lesk:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Tento výstup ukazuje všechny procesy spojené s aktuální uživatel a terminálové relace. To dává smysl, protože jsme jen bash
ps
s tímto terminálem v současné době.,
získat úplnější obraz procesů na tento systém, můžeme spustit následující:
ps aux
Tyto volby říct, ps
zobrazit procesy ve vlastnictví všechny uživatele (bez ohledu na jejich terminálu association) v uživatelsky přívětivé podobě.
Aby se dívat na strom, pohled, kde hierarchickými vztahy jsou ilustrované, můžeme spustit příkaz s těmito možnostmi:
ps axjf
Jak můžete vidět, proces kthreadd
je prokázáno, že být rodičem ksoftirqd/0
proces a další.,
poznámka o procesních ID
v systémech Linux a Unix je každému procesu přiřazeno ID procesu nebo PID. Takto operační systém identifikuje a sleduje procesy.
rychlý způsob, jak dostat PID procesu, který je s pgrep
příkaz:
pgrep bash
1017
Tohle bude prostě dotaz na ID procesu, a vrátit ji.
první proces, který se zrodil při startu, nazvaný init, je uveden PID „1“.,
pgrep init
1
Tento proces je pak zodpovědný za tření každý jiný proces v systému. Pozdější procesy jsou uvedeny větší čísla PID.
rodič procesu je proces, který byl zodpovědný za jeho tření. Rodič procesy mají PPID, které můžete vidět v záhlaví sloupců v mnoha process management aplikací, včetně top
htop
ps
.,
jakákoli komunikace mezi uživatelem a operačním systémem o procesech zahrnuje překlad mezi názvy procesů a PID v určitém okamžiku během operace. To je důvod, proč vám nástroje řeknou PID.
Rodič-Dítě Vztahy
Vytváření podřízený proces se děje ve dvou krocích: fork(), která vytvoří nový adresní prostor a kopie zdroje ve vlastnictví mateřské via copy-on-write bude k dispozici pro dítě proces; a exec(), která načte spustitelný soubor do adresního prostoru a spustí jej.,
v případě, že proces dítěte zemře před jeho rodičem, dítě se stane zombie, dokud rodič neshromažďuje informace o něm nebo neoznámí jádru, že tyto informace nepotřebuje. Zdroje z dětského procesu pak budou uvolněny. Pokud však rodičovský proces zemře před dítětem, dítě bude adoptováno init, i když může být také přeřazeno do jiného procesu.
jak odesílat procesy signály v Linuxu
všechny procesy v Linuxu reagují na signály. Signály jsou OS-level způsob, jak říkat programy ukončit nebo upravit jejich chování.,
jak odesílat procesy signály pomocí PID
nejběžnější způsob předávání signálů do programu je pomocí příkazu kill
.
Jak by se dalo očekávat, standardní funkce tohoto nástroje je, aby se pokusili zabít proces:
<před>
zabít <span class=“highlight“>PIDoftarget_process</span>
</pre>
Tento odešle signál TERM, k procesu., Termín signál říká proces ukončit. To umožňuje programu provádět operace čištění a hladce ukončit.,
Pokud se program nechová a nemá výstupu při daném TERMÍNU signálu, můžeme stupňovat signálu průchodem KILL
signál:
<před>
zabít -ZABÍT <span class=“highlight“>PIDoftarget_process</span>
</pre>
Toto je speciální signál, který je odeslán na programu.,
místo toho je dáno jádru operačního systému, které proces vypne. To se používá k obcházení programů, které ignorují signály, které jim byly zaslány.
každý signál má přidružené číslo, které lze předat místo názvu. Například můžete předat „-15“ namísto „- TERM“ a „-9″místo“ – KILL“.
jak používat signály pro jiné účely
signály se nepoužívají pouze k vypnutí programů. Mohou být také použity k provádění dalších akcí.
například mnoho démonů se restartuje, když dostanouHUP
nebo zavěšený signál., Apache je JEDEN program, který funguje takto.
<před>
sudo kill-HUP <span class=“highlight“>pidofapache</span>
</pre>
výše uvedený příkaz způsobí, Apache, aby znovu svůj konfigurační soubor a pokračovat v poskytování obsahu.,
můžete seznam všech signálů, které je možné poslat se zabít zadáním:
kill -l
Jak Poslat Procesům Signály, podle Jména
i když konvenční způsob posílání signálů je pomocí Pid, tam jsou také způsoby, dělá to s normální proces jmen.,
pkill
příkaz pracuje v téměř přesně stejným způsobem jako kill
, ale působí na název procesu místo:
pkill -9 ping
výše uvedený příkaz je ekvivalentní:
kill -9 `pgrep ping`
Pokud byste chtěli poslat signál do každé instance určitého procesu, můžete použít killall
příkaz:
killall firefox
výše uvedený příkaz vyšle signál TERM, do každé instance firefox běžící na počítači.,
jak nastavit priority procesu
často budete chtít upravit, které procesy mají přednost v prostředí serveru.
některé procesy mohou být považovány za kritické pro vaši situaci, zatímco jiné mohou být provedeny, kdykoli mohou být zbylé zdroje.
Linux ovládá prioritu pomocí hodnoty zvané niceness.
úkoly s vysokou prioritou jsou považovány za méně pěkné, protože také nesdílejí zdroje. Na druhou stranu procesy s nízkou prioritou jsou hezké, protože trvají na tom, aby využívaly pouze minimální zdroje.,
Když jsme na začátku článku spustili top
, byl sloupec označený „NI“. To je pěkná hodnota na proces:
top
Pěkné hodnoty mohou být v rozsahu mezi „-19/-20“ (nejvyšší priorita) a „19/20“ (nejnižší priorita) v závislosti na systému.,
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“>:
<před>
renice 0 <span class=“highlight“>PIDtoprioritize</span>
</pre>
Poznámka: Zatímco pěkné pracuje s název příkazu nutností, renice pracuje tím, že volá proces PID
Závěr
řízení Procesů je téma, které je někdy obtížné pro nové uživatele k pochopení, protože použité nástroje jsou odlišné od jejich grafické protějšky.,
myšlenky jsou však známé a intuitivní a s trochou praxe se stanou přirozenými. Protože procesy jsou zapojeny do všeho, co děláte s počítačovým systémem, učení, jak je efektivně ovládat, je základní dovedností.
<div class=“autor“>Justin Ellingwood</div > >
Leave a Reply