Linux系统是一个多用户,多任务的操作系统,linux中同时运行这非常多的进程,但是cpu同一个时钟周期,只能运算一个指令。进程优先级决定了每个进程处理的先后顺序。 ## 如何查看进程优先级 ps -le 命令打印系统进程: ``` machuangdeMacBook-Pro:~ machuang$ ps -le UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD 0 1 0 4004 0 37 0 4375272 15616 - Ss 0 ?? 0:08.51 /sbin/launchd 0 50 1 4004 0 4 0 4351128 1640 - Ss 0 ?? 0:00.50 /usr/sbin/syslog 0 51 1 4004 0 37 0 4383328 16944 - Ss 0 ?? 0:00.69 /usr/libexec/Use 0 54 1 4004 0 20 0 4341096 8404 - Ss 0 ?? 0:00.06 /System/Library/ 0 55 1 4004 0 37 0 4387652 21496 - Ss 0 ?? 0:02.84 /usr/libexec/kex 0 56 1 1004004 0 50 0 4357408 10660 - Ss 0 ?? 0:00.91 /System/Library/ 0 58 1 4004 0 4 0 4376372 18332 - Ss 0 ?? 0:00.11 /System/Library/ 0 59 1 4004 0 20 0 4448588 12940 - Ss 0 ?? 0:00.14 /usr/local/opt/p 55 61 1 4004 0 4 0 4379836 10364 - Ss 0 ?? 0:00.31 /System/Library/ 0 62 1 4004 0 4 0 4381992 14872 - Ss 0 ?? 0:00.37 /usr/sbin/system 0 64 1 400c 0 37 0 4382632 12472 - Ss 0 ?? 0:00.96 /usr/libexec/con 0 65 1 4004 0 37 0 4376736 10276 - Ss 0 ?? 0:00.88 /System/Library/ 0 66 1 4004 0 20 0 4330896 4128 - Ss 0 ?? 0:00.02 nginx: master pr 0 70 1 4004 0 37 0 4429136 13136 - Ss 0 ?? 0:01.04 /usr/libexec/log ``` pri和ni都代表优先级,数字越小优先级越高。 pri :priority Ni:nice ## 修改NI值注意事项 * NI值的范围是-20到19; * 普通用户调整NI范围是0到19,而且只能调整自己的进程; * 普通用户只能调高NI值,而不能降低。则原本NI值等于0,则只能调整为大于0; * root用户才能设定进程NI为负值,而且可以调整所有用户的进程。 * PRI(最终值) = PRI(原始值)+NI * 用户只能修改该NI的值,不能直接修改PRI ## nice命令 Nice可以给新执行的命令直接赋予NI值,但是不能修改已存在进程的NI值 nice -n NI值 命令,例如: nice -n -5 service httpd start ## renice命令 renice命令修改已经存在进程的NI值,renice [优先级] PID 例如: renice -10 2125