为什么 unix ps -l 在“PRI”列中显示一个数字,但同时 ps -o pri 会显示另一个数字?
PS 这些进程的 cpu 和 nice 为零
答案1
在 Linux 中procps
,标有“PRI”的列ps -l
是-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”列,因为数字越大,优先级越低,因此不使用它。我相信这两列是从 solaris 复制而来的。该-o pri
列在内部用于 的“PRI”列ps -lc
。