web-dev-qa-db-ja.com

Unix ps-l優先度

Unix ps -lが「PRI」列に1つの番号を表示するのに、同時にps -o priが別の番号を表示するのはなぜですか?

P.S.これらのプロセスでは、CPUとニースはゼロです。

2
Grook

Linux procpsでは、ps -lの「PRI」というラベルの付いた列は-o opriです。 output.cを調べると、半ダースの異なる優先度の出力タイプが表示されます。

// "priority"         (was -20..20, now -100..39)
// "intpri" and "opri" (was 39..79, now  -40..99)
// "pri_foo"   --  match up w/ Nice values of sleeping processes (-120..19)
// "pri_bar"   --  makes RT pri show as negative       (-99..40)
// "pri_baz"   --  the kernel's ->prio value, as of Linux 2.6.8     (1..140)
// "pri"               (was 20..60, now    0..139)
// "pri_api"   --  match up w/ RT API    (-40..99)

それらすべてを次のように表示します。

ps -o pid,priority,opri,pri_foo,pri_bar,pri_baz,pri,pri_api,comm

  PID PRI PRI FOO BAR BAZ PRI API COMMAND
 2201  20  80   0  21 120  19 -21 zsh
 2762  30  90  10  31 130   9 -31 cat
 2826  20  80   0  21 120  19 -21 ps

catNice cat /dev/zero > /dev/nullです)

-o pri値は、UNIX標準の「PRI」列には適していません。数値が大きいほど優先度が低くなるため、使用されません。これらの2つの列はSolarisからコピーされたものだと思います。 -o pri列は、ps -lcの「PRI」列の内部で使用されます。

7
Random832