Sílu linuxového příkazového řádku lze posoudit podle skutečnosti, že můžete dokonce snadno upravit prioritu plánování procesů pomocí nástrojů příkazového řádku. Ano, to je možné a v tomto tutoriálu probereme, jak to udělat pomocí hezkého a renice nástroje.
Ale než to uděláme, stojí za zmínku, že všechny příklady v tomto článku byly testovány na systému Ubuntu 16.04LTS.
Příkazy nice a renice pro Linux
Zatímco příkaz nice vám umožňuje spustit program/proces s upravenou prioritou plánování, příkaz renice vám umožňuje změnit prioritu plánování již běžícího procesu. Níže je uvedena obecná syntaxe obou těchto příkazů:
nice [OPTION] [COMMAND [ARG]...]
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
Zde je to, co o nich říkají jejich příslušné manuálové stránky:
Nice:
Run COMMAND with an adjusted niceness, which affects process schedul?
ing. With no COMMAND, print the current niceness. Niceness values
range from -20 (most favorable to the process) to 19 (least favorable
to the process).
Renice:
Renice alters the scheduling priority of one or more running processes.
The following who parameters are interpreted as process ID's, process
group ID's, or user names. Renice'ing a process group causes all pro?
cesses in the process group to have their scheduling priority altered.
Renice'ing a user causes all processes owned by the user to have their
scheduling priority altered. By default, the processes to be affected
are specified by their process ID's.
Následuje několik příkladů ve stylu otázek a odpovědí, které vám poskytnou lepší představu o tom, jak tyto nástroje fungují.
Q1. Jak zkontrolovat správnost spuštěných programů/procesů?
Ano, člověk by měl nejprve vědět, jak zkontrolovat stávající prioritu plánování, než ji změní. Pokud jde o proces, který se chystáte spustit, měli byste vědět, že výchozí priorita plánování je vždy 0.
Provedli jsme například následující proces:
./test-new
A potvrdil prioritu pomocí následujícího příkazu:
ps -lu himanshu | grep test-new
Zde je „himanshu“ uživatel, který vlastní proces „test-nový“. Následuje výstup výše uvedeného příkazu:
0 S 1000 6306 6125 0 80 0 - 508 hrtime pts/18 00:00:00 test-new
Hodnota v 8. sloupci je hezká hodnota, a jak vidíte, je to nula.
Q2. Jak pěkný příkaz funguje?
Takže teď k věci, jak funguje pěkný příkaz? Je to snadné – stačí použít nástroj následujícím způsobem:
nice -PRIORITY COMMAND
Pokud například chci, aby priorita plánování byla 10, mohu to udělat takto:
nice -10 ./test-new
Následuje výstup příkazu ps v tomto případě, který potvrzuje, že priorita byla změněna na 10.
0 S 1000 6694 6125 0 90 10 - 508 hrtime pts/18 00:00:00 test-new
O3. Jak udělat pěknou práci se zápornými hodnotami?
Jak již bylo zmíněno na začátku, hodnoty slušnosti se pohybují od -20 do 19, přičemž první je nejpříznivější, zatímco druhá je nejnižší. V případě, že chcete procesu přiřadit zápornou hodnotu nice, pak budete muset použít dvojitou pomlčku.
Například
sudo nice --10 ./test-new
Vezměte prosím na vědomí, že k přiřazení záporné hodnoty nice k procesu musíte mít oprávnění root. A právě z tohoto důvodu by váš příkaz ps pro potvrzení nové vlastnosti měl obsahovat 'root' namísto jiného uživatelského jména.
$ ps -lu root | grep test-new
Zde je výstup, který tento příkaz vytvořil v našem případě:
4 S 0 7054 7053 0 70 -10 - 508 - pts/18 00:00:00 test-new
Takže můžete vidět, že proces nyní běží s příjemnou hodnotou -10.
Q4. Jak přidat nastavenou celočíselnou hodnotu ke kráse?
Hodnotu nice můžete upravit pomocí volby příkazového řádku -n, která ke zdvořilosti přidá nastavenou celočíselnou hodnotu. Ve výchozím nastavení je tato nastavená hodnota 10, i když můžete předat i jinou hodnotu.
-n, --adjustment=N
Například:
nice --adjustment=5 ./test-new
A zde je výstup, v tomto případě vytvořený příkaz ps:
0 S 1000 7314 6125 0 85 5 - 508 hrtime pts/18 00:00:00 test-new
Můžete tedy vidět, že byla nastavena priorita 5.
O5. Jak změnit prioritu běžících procesů?
Zatímco příkaz nice se používá při spouštění programů, příkaz renice vám umožňuje změnit prioritu běžícího procesu. Zde je například uvedeno, jak jsme změnili prioritu již běžícího procesu „test-nový“ z 5 na 15.
renice -n 15 -p 7314
Argument -p je pro ID procesu. Následuje výstup výše uvedeného příkazu:
7314 (process ID) old priority 5, new priority 15
A pěkná hodnota se skutečně změnila na 15.
O6. Jak změnit prioritu pro všechny procesy patřící do skupiny?
K tomu můžete použít volbu -g. Například:
renice -n 20 -g howtoforge
Výše uvedený příkaz změní prioritu všech procesů patřících do skupiny 'howtoforge'.
O7. Jak změnit prioritu pro všechny procesy patřící uživateli?
Chcete-li změnit prioritu pro všechny programy přidružené k uživateli, použijte volbu -u. Například:
renice -n 5 -u himanshu
Samozřejmě, že normální uživatel příkazového řádku Linuxu se obvykle nedostane do situací, kdy jsou tyto nástroje potřeba, ale vždy je dobré mít znalosti o důležitých nástrojích příkazového řádku a nice a renice mezi ně patří. Dobrá věc je, že křivka učení s nimi spojená není vůbec strmá. Většinu možností jsme zde již probrali. Další informace o těchto nástrojích najdete na jejich manuálových stránkách – zde a zde.