linux系统上运行的每个进程都分配了一个默认优先级,它告诉系统每个特定进程应该有多少处理能力。可以使用nice或者renice命令更改此优先级值。这里有一个小例子:假设我们有一个非常简单的bash脚本,它将日期和时间打印到文件中1000次。
#!/bin/bash for i in $(seq 1 1000); do date >> date.txt;sleep 1; done
保存此脚本并使用chmod命令使其可执行。执行脚本:
$ nice -n 00 ./date &
通过使用nice-19命令执行./date脚本,我们为date.sh提供了非常高的优先级,因为优先级范围从-20(最高)到19(最低)。要确认优先级,请从同一终端运行ps-l命令。
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3670 2940 0 80 0 - 1196 - pts/2 00:00:00 bash 0 S 1000 6665 3670 0 90 10 - 1111 - pts/2 00:00:00 date.sh 0 S 1000 6697 6665 0 90 10 - 754 - pts/2 00:00:00 sleep
正如您所看到的,date命令和sleep命令具有相同的优先级10。但是,在date.sh中运行的sleep是date.sh的子进程,date.sh是sleep的父进程。在此阶段,我们可以尝试使用renice命令和PID(过程标识号)将优先级更改为其他值:
$ renice 15 -p 6655 6665: old priority 10, new priority 15
上述命令将nice值从10更改为15。要确认优先级值:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 3670 2940 0 80 0 - 1198 - pts/2 00:00:00 bash 0 S 1000 6665 3670 0 95 15 - 1113 - pts/2 00:00:00 date.sh 0 S 1000 7109 6665 0 95 15 - 754 - pts/2 00:00:00 sleep
说明:使用非超级用户帐户,您只能更改您拥有的流程的优先级,只能在0–19范围内分配优先级,并且只能增加一个很好的值。根用户可以将任何进程更改为任何优先级值。更改优先级值的另一种方法是使用top命令和r键。
日期:2020-07-07 20:54:54 来源:oir作者:oir