使用nice和renice更改Linux进程的优先级

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