このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】優先度を指定してコマンドを実行する:niceコマンド

niceコマンドの概要

 niceコマンドは、プロセスの実行優先度を設定するためのコマンドです。niceコマンドを使わずに特定のコマンドを実行すると、そのプロセスのnice値は0に設定されます。nice値の指定なしでniceコマンドを使ってコマンドを実行すると、そのプロセスのnice値は10に設定されます。マイナスのnice値を設定できるのはrootユーザーだけです。既に実行されているプとセスのnice値を変更したい場合は、reniceコマンドを使用します。

【構文】
nice [オプション] コマンド

主なオプションと説明

オプション説明
-n実行するコマンドのnice値を指定します。
主なオプションと説明

nice値

  • PRI(Priority): 優先度を示す値です。LinuxではPRIを直接変更することはできません。
  • nice値: PRIに影響を与える値で、-20から19の範囲があります。
  • -20は最高の優先度、19は最低の優先度を示します。
  • PRIの低いプロセスが優先されます。
  • nice値をPRIに足し合わせて優先度を調整します。

コマンドの使用例と解説

1.niceコマンドを使わずにコマンドを実行

・「sleep 1000 &」コマンドを実行します。

「sleep」コマンドをバックグラウンドで実行します。

user01@ubuntu-vm:~$ sleep 1000 &
[1] 3881

2.デフォルトのnice値(10)を使ってコマンドを実行

・「nice sleep 1000 &」コマンドを実行します。

「sleep」コマンドをバックグラウンドで実行します。コマンドはnice値10で実行されます。

user01@ubuntu-vm:~$ nice sleep 1000 &
[2] 3882

3.指定したnice値を使ってコマンドを実行

・「nice -n 15 sleep 1000 &」コマンドを実行します。

「sleep」コマンドをバックグラウンドで実行します。コマンドはnice値5で実行されます。

user01@ubuntu-vm:~$ nice -n 15 sleep 1000 &
[2] 3794

4.プロセスの優先度の確認

・「ps -lC sleep」コマンドを実行します。

起動したすべてのsleepプロセスのPRI値とnice値を確認します。

user01@ubuntu-vm:~$ ps -lC sleep
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    3881    3866  0  80   0 -  2355 hrtime pts/0    00:00:00 sleep
0 S  1000    3882    3866  0  90  10 -  2355 hrtime pts/0    00:00:00 sleep
0 S  1000    3883    3866  0  95  15 -  2355 hrtime pts/0    00:00:00 sleep

下図のように指定したnice値の分だけPRI値が大きくなっていることが確認できます。

5.すべてのsleepプロセスの終了

・「killall sleep」コマンドを実行します。

起動したすべてのsleepプロセスを終了させます。

user01@ubuntu-vm:~$ killall sleep
[1]-  Terminated              nice sleep 1000
[2]+  Terminated              nice -n 15 sleep 1000

まとめ

 niceコマンドを使用することで、プロセスの実行優先度を調整できます。デフォルトではnice値10が設定されますが、-nオプションを使用することで任意のnice値を指定できます。rootユーザーのみがマイナスのnice値を設定可能で、実行中のプロセスのnice値を変更する場合はreniceコマンドを使用します。nice値が低いプロセスほど優先的に実行されるため、システムの負荷を管理する際に非常に役立ちます。