【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

『nice』実はこれコマンドなんです。

 

ゲームやアニメをこよなく愛する雑食性オタク、システムソリューション部のinusukiです。

今回はUNIX系OS(Linuxなど)で使われる「nice」コマンドについてブログを書くなりします。

niceコマンドについて

niceコマンドとはプロセスの相対優先度を変更して実行するコマンドです。

似たようなコマンドで「renice」コマンドがありますが、こちらは実行中のものを変更します(書式も若干違います)

※今回は混同を避けるため、敢えて取り上げていないです。

優先度&オプションまとめ

優先度について

優先度(nice値)は-20から19の値で調整でき、

マイナスに行くほど優先度が高くなり、プラスに行くほど優先度が低くなります(どうして…)

尚、優先度を高くするにはroot権限が必要になります。

優先度 備考
-20 rootユーザでのみ変更可能
0 初期値
19 rootユーザ、一般ユーザで変更が可能

オプションについて

niceコマンドのオプションはこちらです!

オプション 説明
-【値】 優先度を指定した値、増減させる
-n【値】 優先度を指定した値、増減させる
(※値を指定しなかった場合、
デフォルトで10が適用されます)
--adjustment=【値】
--help ヘルプを表示
--version バージョンを表示

…はい!なんか色々とありますが、基本的に「-n【値】」を覚えていたらOKです。

(※明示的に指定してあげないとデフォルト値(+10)が指定されるので注意しましょう~)

 

例えば、beyond.shというスクリプトを優先度を-5して実行したい場合は下記のような書式になります。

# nice -n -5 /opt/beyond.sh

他プロセスと比較してみると優先度(NI)が-5されて実行されていることが確認できます。

 
PID  USER PR NI VIRT  RES  SHR  S %CPU %MEM TIME+   COMMAND 
2818 root 15 -5 13004 1416 1208 S 0.0  0.3  0:00.05 /bin/bash /opt/beyond.sh

nice値の確認方法

確認方法(一例)

現在実行されているプロセスの相対優先度(NI)は ps -l とか top -c とかで確認することができますよ。

ps -l


# ps -l
F S UID PID  PPID C PRI NI ADDR SZ    WCHAN  TTY    TIME     CMD
4 S 0   2526 2503 0 80  0  -    35262 poll_s pts/0  00:00:00 sudo
4 S 0   2528 2526 0 80  0  -    22938 do_wai pts/0  00:00:00 su
4 S 0   2529 2528 0 80  0  -    3946  do_wai pts/0  00:00:00 bash
0 R 0   3315 2529 0 80  0  -    13267 -      pts/0  00:00:00 ps

top -c


#top -c
PID   USER    PR NI VIRT   RES   SHR  S %CPU %MEM TIME+   COMMAND 
571   root    20 0  474024 17456 6156 S 0.0  3.5  0:05.50 /usr/bin/python2 -Es /usr/sbin/tuned -l -P 
341   polkitd 20 0  613016 9184  5076 S 0.0  1.8  0:00.20 /usr/lib/polkit-1/polkitd --no-debug 
1474  root    20 0  447996 8968  6708 S 0.0  1.8  0:01.16 /usr/sbin/NetworkManager --no-daemon 
1     root    20 0  127992 6612  4128 S 0.0  1.3  0:03.88 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 
1499  root    20 0  102904 5512  3456 S 0.0  1.1  0:00.02 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-+ 
2818  root    15 -5 13004  1416  1208 S 0.0  0.3  0:00.05 /bin/bash /opt/beyond.sh

変更するメリット

明示的に優先度を指定してあげることで、他の優先度が高いプロセスにCPUリソースを割くことができます~

つまり、相対的にCPUに対する負荷を抑えることができるということ(らしい)です!

 

……むむむ、と言われてもよくわからないですね。

人間的に言えば、忙しい中で重要な仕事を振られるか割とゆとりのある仕事を振られるか、だと思います。

前者のような仕事振られても手に負えないですし、スケジュールを組み直すのも大変ですよね。

優先度を決められた仕事を割り振られた方が、他の仕事と並行してもスムーズに処理できると思います。

CPUもそういうことです(伝わるといいな)

どんな時に使う?

さて、このniceコマンドいつ使うのでしょうか?

いくつかの使いどころをPickupしてきました!

  • mysqldumpで大量のデータをエクスポートする場面
  • 事後調査の為に大量のログから正規表現でgrepする時
  • 重めのバッチ処理を流す時

などなど……

緊急度が低く、且つ重めな処理を他プロセスの処理を引っ張ることなく通したい場合とかに使えます!

 

どの辺りがniceなの?

さてさて、ここまでniceコマンドについて色々調べてみましたが、

このniceコマンド、どの辺りがniceなんでしょうか……?

(わたし、気になります!)

という物好きな方もいらっしゃるかと思いますので、コラムとしてここに残しておきます。

niceコマンドの由来について調べてみた!

調べてみたところ諸説ありましたが、

他のユーザの為に自ら優先度を下げるなんて優しいんだ!

CPUを労わってあげるなんて...あなたは優しいですね。」という

どうやら親切度やそのユーザへの称賛を表したコマンドのようです。

(優先度を低くすることで値がプラスになるのもその為だとか……知りませんでした。)

まとめ

今回の内容について簡潔にまとめるとこんな感じです。

  • 基本的な書式は nice -n【値】
  • 優先度を変更して実行でき、CPUへの負荷を抑えられる
  • マイナスになると高く、プラスになると優先度は低くなる(nice値:-20~19)
  • 優先度の引き上げにはroot権限が必要

最後に

このような拙いブログを最後まで読んでいただきましてありがとうございます。

今後も不定期ではありますが、投稿致しますので宜しくお願い致します。

それでは失礼致します。

 

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
4
読み込み中...
4 票, 平均: 1.00 / 14
5,786
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

inusuki

2021年4月、ビヨンドに新卒入社。
アウトプットに難有りなのか、たまに変なことを言います。