Linuxでプロセス実行の優先度を指定する!(nice/renice)

Linuxでプロセス実行の優先度を指定して実行します。

実行中のプロセスの優先度を確認する!(ps -el)

実行中のプロセスの優先度を「-l」オプションを使用して確認します。NI列が優先度になり、-20(優先度高)〜19(優先度低)で、デフォルト値は「0」です。

$ ps -efl | head
F S UID          PID    PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root           1       0  0  80   0 - 46726 -      Feb05 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
1 S root           2       0  0  80   0 -     0 -      Feb05 ?        00:00:00 [kthreadd]
1 I root           3       2  0  60 -20 -     0 -      Feb05 ?        00:00:00 [rcu_gp]
1 I root           4       2  0  60 -20 -     0 -      Feb05 ?        00:00:00 [rcu_par_gp]
1 I root           6       2  0  60 -20 -     0 -      Feb05 ?        00:00:00 [kworker/0:0H-events_highpri]
1 I root           9       2  0  60 -20 -     0 -      Feb05 ?        00:00:00 [mm_percpu_wq]
1 S root          10       2  0  80   0 -     0 -      Feb05 ?        00:00:00 [ksoftirqd/0]
1 I root          11       2  0  80   0 -     0 -      Feb05 ?        00:00:00 [rcu_sched]
1 S root          12       2  0 -40   - -     0 -      Feb05 ?        00:00:00 [migration/0]

優先度を指定してプロセスを実行する!

優先度を指定してプロセスを実行する場合は、niceコマンドを使用してコマンドを実行します。以下は、プロセスの優先度をとして、19を指定して実行します。

$ nice -n 19 sleep 600
^Z
[1]+  Stopped                 nice -n 19 sleep 600
$ bg
[1]+ nice -n 19 sleep 600 &
$ ps -efl | grep "sleep 600" | grep -v grep
0 S usradmin   14366   13472  0  99  19 -  1827 -      06:41 pts/0    00:00:00 sleep 600

実行中のプロセスの優先度を変更する!

優先度を指定してプロセスを実行する場合は、reniceコマンドを使用してコマンドを実行します。以下は、プロセスの優先度を、18に変更します。

$ sudo renice 18 14366
14366 (process ID) old priority 19, new priority 18
$ ps -efl | grep "sleep 600" | grep -v grep
0 S usradmin   14366   13472  0  98  18 -  1827 -      06:41 pts/0    00:00:00 sleep 600

おわりに

長時間実行するコマンドなど、プロセスの優先度を指定したい場合は、niceコマンドあるいはreniceコマンドで実行の優先度を調整します。

関連記事

関連書籍(Amazon)

N/A