使用 Linux Nice 和 Renice 示例更改进程优先级
Linux 中每个正在运行的进程都有一个优先级分配给它。
您可以使用 nice 和 renice 实用程序更改进程优先级。Nice 命令将启动具有用户定义的调度优先级的进程。Renice 命令将修改正在运行的进程的调度优先级。
Linux 内核调度进程并相应地为每个进程分配 CPU 时间。但是,当您的某个进程需要更高优先级以获得更多 CPU 时间时,您可以使用 nice 和 renice 命令,如本教程中所述。
进程调度优先级范围是-20到19。我们称之为nice值。
nice 值 -20 表示最高优先级,nice 值 19 表示进程的最低优先级。
默认情况下,当进程启动时,它的默认优先级为 0。
1. 显示过程的良好价值
可以使用 ps 命令显示进程的当前优先级。
ps 命令输出中的“NI”列表示进程当前的nice 值(即优先级)。
我们将启动一个名为 test.pl 的测试程序,用于演示 nice 和 renice 命令。该测试程序将执行某些任务,并将运行一段时间。
$ perl test.pl
如果执行如下所示的ps 命令,您会注意到这个 test.pl 程序的默认 nice 值是 0(查看以下输出中的 NI 列)。
$ ps -fl -C "perl test.pl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 R bala 6884 6424 99 80 0 - 1556 - 13:45 pts/3 00:05:54 perl test.pl
2.启动一个优先级较低的程序
您可以使用 nice 命令来启动具有特定优先级的进程,而不是使用默认优先级启动程序。
在这个例子中,test.pl 以一个不错的值 10 启动。
$ nice -10 perl test.pl
注意:请记住,上面命令中的 -10 将进程的优先级设置为 10。nice 命令中的 – 代表 hypen,我们使用它来将选项传递给命令。
所以,要传递好的值 5,你会说 -5。要传递 6 的好值,您会说 -6。
正如你在下面看到的,这个程序现在以一个不错的值 10 启动,这意味着与默认启动的其他程序相比,它会以较低的优先级运行。
$ ps -fl -C "perl test.pl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 R bala 7044 6424 99 90 10 - 1556 - 13:58 pts/3 00:00:03 perl test.pl
3.启动具有高优先级的程序
您还可以启动具有更高优先级的程序。负的 nice 值将增加进程的优先级。因此,该值必须在 nice 命令前面使用 - (两个连字符)指定,如下所示。
# nice --10 perl test.pl
因此,要传递-5 的nice 值,您将在5 前面添加两个连字符。要传递-6 的nice 值,您将在6 前面添加两个连字符。
正如你在下面看到的,这个程序现在以一个不错的值 -10 启动,这意味着与默认启动的其他程序相比,它会以更高的优先级运行。
# ps -fl -C "perl test.pl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
注意:普通用户不能启动优先级更高的程序。只允许 root 用户启动具有高优先级的程序。
作为普通用户,如果您提高优先级,您将收到来自 nice 命令的以下错误消息。
$ nice --10 perl test.pl
nice: cannot set niceness: Permission denied
请注意,打印上述错误消息后,程序仍会以默认优先级(即:0)继续运行。
4. 使用选项 -n 更改优先级
可以借助 -n 选项调整进程优先级。
增加优先级:
# nice -n -5 perl test.pl
降低优先级:
# nice -n 5 perl test.pl
5.更改正在运行的进程的优先级
可以使用 renice 命令更改已运行进程的优先级。
在这个例子中,程序 test.pl 已经以 -10 的不错的值运行。
# ps -fl -C "perl test.pl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
我们可以将上述程序的nice值改为-19,如下所示。将上述程序的进程 ID 传递给 -p 选项。
# renice -n -19 -p 3534
验证 nice 值是否已更改为 -19。
# ps -fl -C "perl test.pl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 R root 3534 3234 99 70 -19 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
6.更改属于一个组的所有进程的优先级
使用 -g 选项可以修改属于一个组的所有进程的优先级。以下命令会将所有属于 tiamo 的进程的 nice 值更改为 5。
# renice -n 5 -g tiamo
7.更改用户拥有的所有进程的优先级
Renice 允许更改特定用户拥有的所有进程的优先级,如下所示。
# renice -n 5 -u bala
上述命令将改变用户bala拥有的所有进程的优先级。它将为属于用户bala 的所有进程分配一个nice 值5。
# ps -fl -C "perl"
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 R bala 2720 2607 99 85 5 - 1556 - 14:34 pts/2 00:05:07 perl test.pl
0 R bala 2795 2661 99 85 5 - 1556 - 14:39 pts/3 00:00:09 perl 2.pl
- 点赞
- 收藏
- 关注作者
评论(0)