Linuxコマンドラインの能力は、コマンドラインツールを使用してプロセスのスケジューリングの優先順位を簡単に微調整できるという事実から判断できます。はい、それは可能です。このチュートリアルでは、 niceを使用してそれを行う方法について説明します。 およびrenice ユーティリティ。
ただし、その前に、この記事のすべての例がUbuntu16.04LTSシステムでテストされていることを言及する価値があります。
Linuxniceおよびreniceコマンド
niceコマンドを使用すると、スケジューリングの優先順位を変更してプログラム/プロセスを実行できますが、reniceコマンドを使用すると、すでに実行中のプロセスのスケジューリングの優先順位を変更できます。これらのコマンドの一般的な構文は次のとおりです。
nice [OPTION] [COMMAND [ARG]...]
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
それぞれのマニュアルページでの説明は次のとおりです。
Nice:
Run COMMAND with an adjusted niceness, which affects process schedul?
ing. With no COMMAND, print the current niceness. Niceness values
range from -20 (most favorable to the process) to 19 (least favorable
to the process).
Renice:
Renice alters the scheduling priority of one or more running processes.
The following who parameters are interpreted as process ID's, process
group ID's, or user names. Renice'ing a process group causes all pro?
cesses in the process group to have their scheduling priority altered.
Renice'ing a user causes all processes owned by the user to have their
scheduling priority altered. By default, the processes to be affected
are specified by their process ID's.
以下は、これらのツールがどのように機能するかについてのより良いアイデアを与えるいくつかのQ&Aスタイルの例です。
Q1。実行中のプログラム/プロセスの良さを確認する方法は?
ええ、変更する前に、まず既存のスケジューリング優先度を確認する方法を知っておく必要があります。実行しようとしているプロセスに関する場合は、デフォルトのスケジューリング優先度が常に0であることを知っておく必要があります。
たとえば、次のプロセスを実行しました。
./test-new
そして、次のコマンドを使用して優先度を確認しました:
ps -lu himanshu | grep test-new
ここで、「himanshu」は「test-new」プロセスを所有するユーザーです。上記のコマンドが生成した出力は次のとおりです。
0 S 1000 6306 6125 0 80 0 - 508 hrtime pts/18 00:00:00 test-new
8列目の値は適切な値であり、ご覧のとおり、ゼロです。
Q2。どのように素晴らしいコマンドが機能しますか?
では、要点になりますが、niceコマンドはどのように機能しますか?簡単です。次のようにツールを使用するだけです。
nice -PRIORITY COMMAND
たとえば、スケジュールの優先度を10にしたい場合、その方法は次のとおりです。
nice -10 ./test-new
この場合のpsコマンドの出力は次のとおりです。優先度が10に変更されたことを確認します。
0 S 1000 6694 6125 0 90 10 - 508 hrtime pts/18 00:00:00 test-new
Q3。負の値でうまく機能させる方法は?
冒頭ですでに述べたように、良さの値は-20から19の範囲で、前者が最も有利で、後者が最も低くなります。負のnice値をプロセスに関連付ける場合は、ダブルハイフンを使用する必要があります。
例:
sudo nice --10 ./test-new
負のnice値をプロセスに関連付けるには、root権限が必要であることに注意してください。そして、まさにこの理由から、新しい良さを確認するためのpsコマンドには、他のユーザー名ではなく「root」が含まれている必要があります。
$ ps -lu root | grep test-new
この場合、このコマンドが生成する出力は次のとおりです。
4 S 0 7054 7053 0 70 -10 - 508 - pts/18 00:00:00 test-new
したがって、プロセスが-10の適切な値で実行されていることがわかります。
Q4。設定された整数値をnicenessに追加するにはどうすればよいですか?
-nコマンドラインオプションを使用してnice値を調整できます。これにより、設定された整数値がnicenessに追加されます。デフォルトでは、この設定値は10ですが、別の値を渡すこともできます。
-n, --adjustment=N
例:
nice --adjustment=5 ./test-new
そして、これが出力です。この場合に生成されるpsコマンドは次のとおりです。
0 S 1000 7314 6125 0 85 5 - 508 hrtime pts/18 00:00:00 test-new
したがって、優先度5が設定されていることがわかります。
Q5。実行中のプロセスの優先度を変更するにはどうすればよいですか?
プログラムの起動中にniceコマンドを使用している間、reniceコマンドを使用すると、実行中のプロセスの優先度を変更できます。たとえば、すでに実行されている「test-new」プロセスの優先度を5から15に変更した方法は次のとおりです。
renice -n 15 -p 7314
-p引数はプロセスID用です。上記のコマンドが生成した出力は次のとおりです。
7314 (process ID) old priority 5, new priority 15
そして、素晴らしい値は確かに15に変更されました。
Q6。グループに属するすべてのプロセスの優先度を変更するにはどうすればよいですか?
これには-gオプションを使用できます。例:
renice -n 20 -g howtoforge
上記のコマンドは、グループ「howtoforge」に属するすべてのプロセスの優先度を変更します。
Q7。ユーザーに属するすべてのプロセスの優先度を変更するにはどうすればよいですか?
ユーザーに関連付けられているすべてのプログラムの優先度を変更するには、-uオプションを使用します。例:
renice -n 5 -u himanshu
もちろん、通常のLinuxコマンドラインユーザーは、通常、これらのツールが必要な状況に陥ることはありませんが、重要なコマンドラインツールの知識を持っていることは常に良いことであり、その中には素晴らしいものがあります。良いことは、それらに関連する学習曲線がまったく急ではないことです。ここでは、オプションの大部分についてすでに説明しました。これらのユーティリティの詳細については、manページ(こことここ)にアクセスしてください。