このページで解説している内容は、以下の 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値が低いプロセスほど優先的に実行されるため、システムの負荷を管理する際に非常に役立ちます。