連載
» 2017年08月10日 05時00分 公開

Linux基本コマンドTips(134):【 nice 】コマンド――優先度を指定してコマンドを実行する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、優先度を指定してコマンドを実行する「nice」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、優先度を指定してコマンドを実行する「nice」コマンドです。

niceコマンドとは?

 「nice」は実行時の優先度を指定してコマンドを実行します。「nice コマンド名」とすると、コマンド実行時の優先度を下げます。

 バックアップや検索用インデックスの作成など、“多少時間がかかってもよいからシステムの負荷を高めずに実行したい”コマンドを動かすときに便利です。

 一般ユーザーは優先度を下げることしかできませんが、スーパーユーザー(root)であれば、優先度を高めてコマンドを実行できます。



niceコマンドの書式

nice [オプション] [実行したいコマンドとそのオプション]

※[ ]は省略可能な引数を示しています。





niceの主なオプション

短いオプション 長いオプション 意味
-n 優先度 --adjustment=優先度 優先度(-20〜19:本文参照)を指定する ※1

※1「nice -10 コマンド」のような指定方法も可能だが、この場合の優先度は「-10」ではなく「10」(「nice -n 10 コマンド」相当)となる。




優先度を下げてコマンドを実行する

 「nice -n 優先度 コマンド」で、優先度を下げてから、コマンドを実行します。

 一般ユーザーは、優先度を「0(通常)」から「19(最低)」まで指定可能です※2。値を指定しなかった場合の優先度は「+10」です。

※2 設定ファイル「/etc/security/limits.conf」などで変更することが可能。



 優先度の値を“nice値”とも言います。他のプロセスに対してどのくらいniceか、という値で、大きいほど優先度が低くなります※3。

※3 今から実行するコマンドに対する優先度を下げる(CPU時間の割り当てを少なくする)ことで、他のプロセスに対してniceに(親切に)働いたことになる。



 コメント名を後ろに付けず、「nice」と実行すると、niceを指定しなかった場合の優先度が表示されます。デフォルトは「0」です。

 実行中のプロセスのnice値は、psコマンド(第6回)やtopコマンド(第123回)で確認できます。例えば、psコマンドでnice値を表示するには「ps -o pid,nice,stat,tt,user,cmd」のように表示内容を指定するか、「ps -O nice」のように、表示項目にnice値を追加します。psコマンド、topコマンド、いずれも「NI」の列にある数値がnice値です。

コマンド実行例

nice コマンド名画面2

(優先度を下げてコマンドを実行)

nice -n 優先度 コマンド名画面3

(優先度を指定してコマンドを実行。一般ユーザーは0〜19まで指定可能で、値が大きいと優先度が低くなる)


 画面1〜3では「sleep 15」をniceコマンド経由で実行することにより、nice値の変化を確認しています。「sleepコマンドは指定した秒数だけ待つ」というコマンド(第66回)で実行内容としては特に意味はありません。

 実行直後にpsコマンドでnice値を確認したいので末尾に「&」を付けて、バックグラウンドで実行しています。

画面1 画面1 niceコマンドを使用しないで実行した場合 NI列にあるように優先度=0になる
画面2 画面2 niceコマンドを使用して実行した場合(その1) 優先度=10になる
画面3 画面3 niceコマンドで優先度を指定して実行した場合(その2) 100と優先度を指定しているものの、最大値である19で実行されている

 なお、画面1のようなデフォルトのnice値は、親プロセスから引き継ぎます。

 画面4では「nice bash」で優先度を10下げた状態でbashを実行し、そこで先ほどと同じsleepコマンドを実行しています。

画面4 画面4 デフォルトのnice値に指定した優先度が加算されたところ


優先度を上げて実行する

 スーパーユーザーの場合、優先度を上げてコマンドを実行することができます。この場合、「-n」でマイナスの値を指定します。一般に、最も優先度が高くなる値は「-20」です。

コマンド実行例

nice -n -10 コマンド

(優先度を上げてコマンドを実行する)


 画面5では、「yum -y update」(システムのアップデート:第45回)を、niceを使って優先度10上げた状態で実行しています。

画面5 画面5 スーパーユーザーが優先度を上げてコマンドを実行しているところ yumコマンドの優先度はー10


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。