[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

23.3 nice: niceness を変更して、コマンドを実行する

nice はプロセスの niceness を表示したり、niceness を変更してコマンドを実行したりする。 niceness は、プロセスがシステム中でどの程度優先的にスケジュールされるかに影響を及ぼす。 (訳注: niceness を「スケジューリング優先度」と訳さない理由については、 三つほど下のパラグラフを御覧いただきたい。)

書式:

 
nice [option]… [command [arg]…]

引数を指定しないと、nice は現在の niceness を表示する。引数に command を指定した場合は、niceness を調整して、その command を実行する。 デフォルトでは、niceness が 10 増加する。

niceness の値は、最小が -20 で、最大が 19 である (値が小さければ、プロセスの優先度が高くなり、使えるリソースも多くなるが、 その分、他のプロセスの動作が遅くなる。また、値が大きければ、プロセスの優先度が低くなり、 自分自身の動作は遅くなるが、実行中の他のプロセスの速度に与える影響は小さくなる)。 システムによっては、niceness の値の範囲がもっと広いものもあるし、 反対に、上下限の制限がもっときついものもある。サポートされている範囲を越えた niceness を指定すると、 サポートされている値の最小、または最大を使用しようとしているものと見なされる。

niceness をスケジューリング優先度 (scheduling priority) と混同してはならない。 後者は、様々なスレッドをどういう序列で実行するかの予定を組む際に、 その序列をアプリケーション側に決めさせるものである。 優先度とは違って、niceness はスケジューラに対する単なるアドバイスにすぎず、 スケジューラはそれを無視することができるのだ。また、用語について言うと、 POSIX は nice の動作を nice value という用語で定義している。 この nice value は、ある niceness と 最小の niceness との間の負ではない差である。 nice コマンドは POSIX に準拠しているものの、 この文書やエラーメッセージでは、従来の習慣との親和性を考慮して、 “niceness” という言葉を使っている。

command は、シェルの組み込みコマンドであってはならない (see section 特殊ビルトイン・ユーティリティ)。

シェルの組み込み機能の nice やエイリアスのために、 nice に何の修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、 動作がここで述べているものとは違うことがあるかもしれない。 シェルによる干渉を避けるためには、env 経由で nice を起動すればよい (すなわち、env nice … のようにだ)。

注意: 現在動作中のプロセスの niceness を変更するには、renice コマンドを使う必要がある。

このプログラムでは、以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。

-n adjustment
--adjustment=adjustment

コマンドの niceness を 10 ではなく、adjustment 増加する。 adjustment が負の数の場合、ユーザがしかるべき特権を持っていなければ、 nice は警告を発する。とは言え、警告を出すだけで、adjustment として 0 が指定されたかのように振る舞う。

互換性を考慮して、nice は ‘-adjustment’ というオプションの古い書式もサポートしている。 だが、新しいスクリプトでは、‘-n adjustment’ の方を使うべきである。

nice がインストールされるのは、 POSIX の setpriority 関数を持っているシステムだけである。 従って、移植を考慮したシステムでは、非 POSIX のプラットフォームに nice コマンドがあることを当てにしない方がよい。

終了ステータス:

 
0:   command が指定されなかったので、niceness を出力した。
125: nice そのものの実行に失敗した。
126: command が見つかったが、起動できなかった。
127: command が見つからなかった。
それ以外は、command の終了ステータス。

対話的ではないプログラムは、niceness を落として (訳注: すなわち、 niceness の値を増やして) 実行すると、都合のよいことがある。

 
$ nice factor 4611686018427387903

nice は、現在の niceness を表示するので、nice を通して nice を起動すれば、それがどんな動作をするか、目の当たりに見ることができる。

デフォルトの動作は、niceness を ‘10’ 増加することである。

 
$ nice
0
$ nice nice
10
$ nice -n 10 nice
10

adjustment は、現在の niceness からいくら増減するかということである。 次の例では、最初の nice が、二番目の nice を niceness 10 で実行し、二番目の nice は、niceness をさらに 3 増やして、三番目の nice を実行している。

 
$ nice nice -n 3 nice
13

サポートされている範囲より大きい niceness を指定するのは、 サポートされている最大値を指定するのと同じことである。

 
$ nice -n 10000000000 nice
19

特権ユーザだけが niceness の値を下げて、プロセスを実行できる。

 
$ nice -n -1 nice
nice: cannot set niceness: Permission denied
0
$ sudo nice -n -1 nice
-1

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.