top
显示优先级为20对于大多数流程,包括(例如火狐垃圾箱)。
同时ps -o pid,lwp,pri,nice,start,stat,bsdtime,cmd,comm -C firefox-bin
显示:
PID LWP PRI NI STARTED STAT TIME CMD COMMAND
9798 9798 19 0 14:03:47 Sl 2:17 /opt/firefox/firefox firefox-bin
由于 top 和 ps 都是古老的命令,因此这似乎不太可能是一个错误。为什么会出现差异?
答案1
Linux优先级范围从0到139。您可以通过查看进程的真实优先级预定的进程中的文件'/进程/子目录。例如,我系统上的 Firefox 的进程 ID 为 84163。因此,如果我运行grep ^prio /proc/84163/sched,它告诉我优先级是 120。这是 Linux 中的默认优先级。实时优先级范围为 0 至 99,用户可以分配优先级为 100 至 139。但是,附注告诉我 Firefox 的优先级是 80 并且顶部告诉我是 20。为什么这三个都不同?根据这一页,ps 给出的优先级范围从 -40 到 99。因此,要获得真正的优先级,请在其上添加 40。 top 命令将每个优先级减去 100。因此,要获得顶部的真正优先级,请为其添加 100。
答案2
看起来top
显示优先级为,20 + nice value
但ps
显示19 - nice value
所以两者都将优先级显示为从 0 到 39 的值,但top
0 表示最高优先级,但ps
39 表示最高优先级。
我不确定为什么会有所不同,这可能是一个错误,ps
因为它的手册页说“数字越高意味着优先级越低”。