【Linuxコマンド】nice コマンドの使い方とよく使うオプション

概要

 
nice コマンドは、処理の優先度(ナイス値)を指定してコマンドを実行するためのコマンドです。
ナイス値は一般的に -20 から 19 の範囲で制御でき、数値が低いほど優先度が高く数値が高いほど優先度が低くなります。
(-20:優先度高 ~ 19:優先度低)
 

環境によって多少異なりますが、ここではデフォルトのナイス値を 10とし、
通常のコマンドやシェル実行時も 10 で実行される前提で説明します。
(実際の値は ps -o pid,ni,cmd などで確認することをおすすめします)
 

負荷の高いバッチ処理やバックアップなどを、通常よりも優先度を下げて実行して、
他のプロセスの邪魔をしにくくする、といった用途でよく使われます。
なお、すでに実行中のプロセスの優先度を変えたい場合は renice コマンドを使用します。
 

フォーマット

 

nice [OPTION] [COMMAND [ARG]...]
nice [-n 調整値] COMMAND [ARG]...

 

オプションを指定しない場合は、環境で定められたデフォルトのナイス値に基づいて実行されます。
-n 調整値 を指定すると、「現在のナイス値からどれだけずらすか」を指定できます。

通常ユーザは「ナイス値を増やす(優先度を下げる)」方向にのみ変更でき、
優先度を上げる(ナイス値を小さくする、負の値を指定する)には root 権限が必要です。

 

よく使うコマンド例

 

・hoge シェルを優先度低で実行する

nice -n 19 /batch/hoge.sh

/batch/hoge.shナイス値 19(もっとも低い優先度)で実行します。
他の処理がある程度優先され、CPU に余裕があるときに少しずつ動いてほしいバッチ処理などでよく使います。

 

・ログの圧縮処理を、標準より少し優先度を下げて実行する

nice -n 5 gzip -r /var/log

標準のナイス値に対して +5 した優先度で gzip -r /var/log を実行します。
CPU をそれなりに使うが、他のインタラクティブな処理を邪魔したくない場合に便利です。

 

・バックアップ処理を、極力他の処理の邪魔をしない形で実行する

nice -n 19 /usr/local/bin/backup.sh

夜間や負荷の低い時間帯に実行するバックアップスクリプトを、さらに優先度低で実行する例です。
実行時間は多少伸びてもよいので、とにかく他のプロセスを優先したい場合に向いています。

 

・root 権限で、優先度を上げて重要な処理を実行する

sudo nice -n -5 /usr/local/bin/critical_job.sh

ナイス値をマイナスにすることで、標準より高い優先度で実行します。
この操作は root 権限が必要です。
重要な監視処理・制御処理など、本当に優先度を上げる必要があるジョブにだけ使うのが安全です。

 

・実行中プロセスの優先度を変えたい場合(参考:renice)

renice -n 10 -p 12345

nice は「起動時の優先度を指定する」コマンドです。
すでに動いている PID 12345 のナイス値を変更したい場合は、renice コマンドを使います。
「起動前に nice、起動後に renice」と覚えておくと整理しやすいです。

 




実務でのよくある使いどころ

 

・バッチ処理やログ圧縮を低優先度で流す
バックアップやログ圧縮、レポート集計のような CPU 負荷が高い処理を、
nice を付けて実行することで、SSH で作業中のオペレータや Web サービスへの影響を抑えることができます。
 

・共有サーバ上での「マナー」として使う
複数人で共有する検証環境などでは、「重い処理を流すときは nice で優先度を下げる」というルールを
チーム内のマナーとして決めておくと、知らない間に誰かの処理が遅くなるトラブルを減らせます。
 

・軽い負荷試験や検証ツールの実行
本番サーバ上で軽くベンチマークを取りたい場合など、
nice -n 10 などで優先度を落としておくと、他の処理への影響をある程度抑えられます。
もちろん、本番環境での負荷試験自体は慎重に行う必要があります。
 

・優先度調整と監視を組み合わせた運用
nice/renice で優先度を調整しつつ、tophtop で CPU 使用状況を確認する運用もよくあります。
単に「CPU が高いからプロセスを kill する」のではなく、
「優先度を下げて他の処理を優先させる」という選択肢が取れると、運用の自由度が上がります。
 

nice コマンドは、一見地味ですがサーバ全体の使いやすさを保つための調整弁のような存在です。
特に共有サーバやバッチサーバでは、ナイス値の考え方と合わせて押さえておくと役に立ちます。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-n--adjustment実行するコマンドに対して加算するナイス値(優先度の調整値)を指定する 正の値で優先度を下げ負の値で優先度を上げる(負の値の指定には通常 root 権限が必要)
--helpnice コマンドの使い方(ヘルプ)を表示して終了する
--versionnice コマンドのバージョン情報を表示して終了する
 

ここでは、GNU coreutils の nice コマンドで一般的に利用できる主なオプションだけを TablePress の表としてまとめている想定です。
実際に利用できるオプションやデフォルトのナイス値は、ディストリビューションやバージョンによって異なる場合があるため、
本番環境で使用する前に man nice で最新の仕様を確認してください。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。



人気ブログランキング


ブログランキング・にほんブログ村へ

にほんブログ村