Unix ps -lが「PRI」列に1つの番号を表示するのに、同時にps -o priが別の番号を表示するのはなぜですか?
P.S.これらのプロセスでは、CPUとニースはゼロです。
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
(cat
はNice cat /dev/zero > /dev/null
です)
-o pri
値は、UNIX標準の「PRI」列には適していません。数値が大きいほど優先度が低くなるため、使用されません。これらの2つの列はSolarisからコピーされたものだと思います。 -o pri
列は、ps -lc
の「PRI」列の内部で使用されます。