命令:nice
参数:
-n ,--adjustment=N 两个参数含义相同,设置进程优先级的谦让值(修正值)为N
示例:
nice -n -10 ws_gw
设置进程ws_gw的优先级的修正值为-10
nice -19 ws_gw
已优先级19来启动ws_gw,此时-不标识负数,而表示参数指令,已19优先级来启动;
作用:
nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
--------也就是说要在启动时,在启动命令前加上 nice xx command才能生效;
例如: nice -10 ./aaa ../conf/aa.xml
--------./aaa ../conf/aa.xml 为正常启动命令,nice -10 即已修正值为10来启动aaa
eg.1.
nice值得范围是-20·19 所以只能是19而不是20
eg.2.
eg.3.
eg.4.
修正值的用法,进程真正的优先级=进程默认优先级+修正值(nice值)
PRI(real) = PRI(old) + NI
所以为负值则优先级越高,为正值优先级越低
其他说明:
top时进程信息字段的ni值即为修正值;最低为19,所以下图的20最终为19
已19优先级启动vi
已正常优先级启动vi
已修正值-10启动vi:
priority
priority通常称之为动态优先级,它的值是由系统分析之后动态调整的,用户是不能直接修改的。在操作系统中,进程的优先级取值范围通过宏MAX_PRIO定义,值为140,它由表示nice(-20 ~ 19)的宏NICE_WIDTH和表示实时进程优先级的宏MAX_RT_PRIO(max realtime priority, 取值0 ~ 99)组成。linux的优先级为0-139, 其中nice的-20~19对应100 ~ 139。进程默认的优先级为:
#define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2)
- priority和nice的相关性如下:
PRI(new) = PRI(old) + NI
- 即如果一个进程的priority=80, nice=10,那这个进程得到新的PRI就为可能90,因为priority是系统动态调整的,它是一个变量,所以可能为90。
[root@www ~]# nice [-n 數字] command
选项与参数:
-n :后面接一个数值,數值的范围 -20 ~ 19。
例一:用 root 給一个 nice 值为 -5 ,用于执行 vi ,並观察该进程!
[root@www ~]# nice -n -5 vi &
[1] 18676
[root@www ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 18625 18623 0 75 0 - 1514 wait pts/1 00:00:00 bash
4 T 0 18676 18625 0 72 -5 - 1242 finish pts/1 00:00:00 vi
4 R 0 18678 18625 0 77 0 - 1101 - pts/1 00:00:00 ps
# 原本的 bash PRI 为 75 ,所以 vi 预设应为 75。不过由于給予 nice 为 -5 ,
# 因此 vi 的 PRI 降低了!但並非降低到 70 ,因为内核还会动态调整!
[root@www ~]# kill -9 %1 <==测试完毕将 vi 关闭