Aerial view of a man using computer laptop on wooden table
Linuxを使っていると「CPUの使用率が高い」「重たいプロセスがほかの作業を邪魔してしまう」といった悩みに直面することがあります。そんなときに便利なのが、プロセスの優先度を調整できる「nice」コマンドです。
niceコマンドを使えば、特定のプロセスを「控えめ」に動かして、他のプロセスにリソースを譲ることができます。この記事では、niceの基本的な使い方から応用例、関連コマンドまで、実践的にわかりやすく解説します。
nice(ナイス)コマンドは、プロセスの実行優先度(nice値)を指定してプログラムを実行するためのコマンドです。
Linuxでは、プロセスごとに「実行優先度(スケジューリングの優先度)」があり、これによってどのプロセスがどれだけCPUを使うかが決まります。
この「優先度」は、-20(最も優先)~19(最も後回し)の範囲で指定されます。
niceを使うことで、指定した値で新しいプロセスを起動することができ、「他の重要な処理の邪魔をしない」ようにできます。
たとえば、動画のエンコードやバックアップ処理など、重い処理を行うスクリプトがあるとします。これを何も考えずに実行すると、CPUがその処理に取られてしまい、他の作業が重くなってしまうことがあります。
そんなときにniceを使って「このプロセスは他の処理が終わってからでいいよ」と優先度を下げることで、システム全体のパフォーマンスを保ったまま重い処理を進めることができます。
nice -n [nice値] コマンド [引数...]
たとえば、CPUをたくさん使うスクリプト heavy_task.sh
を nice 値10で実行する場合は、以下のようになります。
nice -n 10 ./heavy_task.sh
-n
オプションで指定する nice 値が大きいほど、CPUの優先度は低くなります。
何も指定しなかった場合は、デフォルトで nice 値 10 で実行されます。
nice ./heavy_task.sh
これは以下と同じ意味です:
nice -n 10 ./heavy_task.sh
nice値を マイナス(優先度を上げる)方向に設定するには、root権限(またはsudo)が必要です。
たとえば、nice値 -5 でプログラムを実行したい場合は以下のようになります。
sudo nice -n -5 ./important_task.sh
通常のユーザーではマイナスのnice値は設定できないため、注意が必要です。
実行中のプロセスのnice値を確認したい場合は、ps
コマンドやtop
コマンドが使えます。
bashコピーする編集するps -o pid,ni,cmd -C プロセス名
例:
ps -o pid,ni,cmd -C python
このコマンドで、指定したプロセスのPID(プロセスID)、nice値、実行コマンドが確認できます。
top
top
コマンドでは、NI
列にnice値が表示されます。リアルタイムで確認できるので便利です。
既に動いているプロセスのnice値を変更したい場合は、renice
コマンドを使用します。
renice [nice値] -p [PID]
例:
renice 15 -p 1234
これは、プロセスID 1234 の nice値を 15 に変更する例です。
なお、こちらも 優先度を上げる(nice値を下げる)場合はsudoが必要です。
sudo renice -5 -p 1234
バックアップスクリプトを控えめに実行したい場合:
nice -n 19 ./backup.sh &
ここで「&」を付けることでバックグラウンド実行になり、システムにあまり負荷をかけずに作業を進められます。
また、定期的な処理をcronで登録している場合も、以下のようにniceを活用することができます。
0 3 * * * nice -n 15 /home/user/scripts/daily_backup.sh
niceは便利な反面、正しく使わないと意図しない結果になる場合があります。値の調整は慎重に行いましょう。
niceコマンドは、Linuxでのプロセス制御において非常に有効なツールです。
リソースを効率的に使いたい場面、他の処理を邪魔したくない場面、システム全体の安定性を保ちたいときにこそ、その真価を発揮します。
nice -n 値 コマンド
で優先度を指定して実行renice
を使って変更可能nice -n 19
などが有効うまく活用して、賢く快適なLinuxライフを送りましょう!