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)