niceコマンドは、ジョブの優先度を変更します。
UNIXはマルチタスクOSであり、一度に複数のプログラムを実行することができます。しかし、実際は、同時に動いているように見えているに過ぎません。それぞれのプログラムに割りあてるCPU時間を微小時間で切り替えることにより、同時に動いているかのように見せているのです。UNIXでは、すべてのプログラムに同じCPU時間を割りあてるのではなく、優先度というものを設けて、優先度の高いプログラムに多くのCPU時間を割りあてます。そして、niceコマンドはこの優先度を変更する際に使用します。
引数を指定せずに実行すると、現在実行しているシェルの優先度を表示します。引数を指定した場合には、オプションに従い優先度を調整してからCOMMAND
で指定したコマンドを実行します。
プログラムの動作時にはCPUを使用します。この時CPUはひとつしかありませんので(複数存在するコンピュータもありますが一般用途ではありません)、複数のプログラムの動作時には、微小時間ごとにCPUを使用するプログラムを変更します。非常に微小な時間で切り替えることによって、それぞれが連続して動いているように見えるのです。この微小な単位時間をCPU時間といいます
- ① -n adjustment
COMMAND
に指定したコマンドの優先度に「adjustment」に指定した値を加えます。このオプションを指定しなかった場合には、コマンドの優先度を10だけ増加します。指定できる優先度の範囲は、-20(優先度最高)から19(優先度最低)までですが、負の値を指定することができるのは、スーパーユーザだけです。
- ① COMMAND ARG...
- 優先度を変更するコマンドを指定します。
シェル組込みコマンドとしてのniceコマンドは、コマンド形式が異なり、優先度の前に+か-を付けて、指定します。そのため「-5」のような指定があり、この場合マイナス5を表します。つまり、「-」は「マイナス」であり「ハイフン」ではありません。
cshなどを使用している場合は、明示的に「/bin/nice」のようなフルパスで指定する必要があります
$ nice
1
シェルの優先度を表示$
$ nice
1
$
$ nice sh
11
優先度を指定せずに実行すると10だけ増加$
$ nice
1
$ nice -n 5 sh
$ nice
6
オプション「-n」を使って優先度を5だけ増加$
$ nice
1
$ nice -n 3 vi&
[1] 1861
viコマンドをバックグランドで実行$ nice -n 5 vi&
優先度は、シェルの優先度である1に3を加えた4となる
[2] 1862
viコマンドをバックグランドで実行[1]+ Stopped nice -n 3 vi
優先度は、シェルの優先度である1に5を加えた6となる
$ nice -n 10 vi&
[3] 1863
viコマンドをバックグランドで実行[2]+ Stopped nice -n 5 vi
優先度は、シェルの優先度である1に10を加えた11となる
$ ps _l
プロセスの状態を表示F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
NIが優先度
100 S 501 1224 1223 0 75 0 - 1078 wait4 pts/0 00:00:00 bash
000 T 501 1861 1224 0 79 4 - 965 do_sig pts/0 00:00:00 vi
000 T 501 1862 1224 0 85 6 - 965 do_sig pts/0 00:00:00 vi
000 T 501 1863 1224 0 90 11 - 965 do_sig pts/0 00:00:00 vi
000 R 501 1932 1224 0 76 0 - 768 - pts/0 00:00:00 ps
$
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.