Hack 100. Nice コマンド
カーネルは、nice 値に基づいてプロセスにどのくらいプロセッサ時間が必要かを決定します。
有効な nice 値の範囲は -20 〜 20 です。
nice 値が -20 のプロセスは、優先順位が高くなります。
nice 値が 20 のプロセスは、優先順位が低くなります。
ps axl を使用して、以下に示すように実行中のプロセスすべての nice 値を表示します。
# ps axl F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 16 0 2172 552 - S ? 0:17 init [5] 1 0 3 1 34 19 0 0 ksofti SN ? 3:18 [ksoftirqd/0] 1 0 10 1 5 -10 0 0 worker S< ? 0:01 [events/0] 4 0 5145 1 25 10 32124 18592 - SNs ? 0:08 /usr/bin/python /usr/bin/rhn-applet-gui --sm-client-id default4 4 0 5147 5142 16 0 3528 604 - S ? 0:00 /sbin/pam_timestamp_check -d root 1 503 17552 4180 16 0 14208 3920 - S ? 0:01 /home/www/apache2/bin/httpd -f /home/www/apache2/conf/httpd.conf -k start
シェルスクリプトの優先順位を低くするには?(nice 値を大きくする)
以下の例では、nice-test.sh スクリプトをバックグランドで実行したときに、
nice 値は 0 になっています。
$ ./nice-test.sh & [3] 13009 $ ps axl | grep nice-test 0 509 13009 12863 17 0 4652 972 wait S pts/1 0:00 /bin/bash ./nice-test.sh [Note: 値が 0 である6番目のカラムが nice 値です]
では、以下に示すように nice 値を変えて同じシェルスクリプトを実行させましょう。
$ nice -10 ./nice-test.sh & [1] 13016 $ ps axl | grep nice-test 0 509 13016 12863 30 10 4236 968 wait SN pts/1 0:00 /bin/bash ./nice-test.sh [Note: 値が 0 である6番目のカラムがシェルスクリプトの nice 値です]
シェルスクリプトの優先順位を高くするには?(nice 値を低くする)
以下の例では、nice-test.sh スクリプトに nice 値 -10 を割り当てています。
$ nice --10 ./nice-test.sh & [1] 13021 $ nice: cannot set priority: Permission denied
Note: root ユーザしか負の nice 値を設定できません。
root としてログインして同じことをしてみてください。
以下では nice コマンドの引数 10 の前に2つのハイフンがあることに注意してください。
# nice --10 ./nice-test.sh & [1] 13060 # ps axl | grep nice-test 4 0 13060 13024 10 -10 5388 964 wait S< pts/1 0:00 /bin/bash ./nice-test.sh [Note: 値が -10 である6番目のカラムがシェルスクリプトの nice 値です]