Linux nice和renice命令教程(7个示例)
Linux命令行的威力可以从以下事实来衡量:您甚至可以使用命令行工具轻松调整进程的调度优先级。 是的,这是可能的,在本教程中,我们将讨论如何使用nice和renice实用程序来实现这一点。
但在这之前,值得一提的是本文中的所有示例都已在Ubuntu 16.04LTS系统上进行了测试。
Linux nice和renice命令
尽管nice命令允许您以修改的调度优先级执行程序/进程,但renice命令允许您更改已运行进程的调度优先级。 以下是这两个命令的通用语法:
nice [OPTION] [COMMAND [ARG]...]
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
以下是他们各自的手册页要说的:
Nice:
Run COMMAND with an adjusted niceness, which affects process schedul?
ing. With no COMMAND, print the current niceness. Niceness values
range from -20 (most favorable to the process) to 19 (least favorable
to the process).
Renice:
Renice alters the scheduling priority of one or more running processes.
The following who parameters are interpreted as process ID's, process
group ID's, or user names. Renice'ing a process group causes all pro?
cesses in the process group to have their scheduling priority altered.
Renice'ing a user causes all processes owned by the user to have their
scheduling priority altered. By default, the processes to be affected
are specified by their process ID's.
以下是一些Q&A样式的示例,可以让您更好地了解这些工具的工作原理。
Q1。 如何检查正在运行的程序/进程的好处?
是的,首先应该知道如何在改变之前检查现有的调度优先级。 如果是关于您即将运行的流程,那么您应该知道默认调度优先级始终为0。
例如,我们执行了以下过程:
./test-new
并使用以下命令确认优先级:
ps -lu himanshu | grep test-new
在这里,'himanshu'是拥有'测试新'流程的用户。 以下是上述命令的输出结果:
0 S 1000 6306 6125 0 80 0 - 508 hrtime pts/18 00:00:00 test-new
第8列的值是很好的值,正如你所看到的那样,它是零。
Q2。 命令有多好?
所以,现在到了这一点,好的命令是如何工作的? 这很简单 - 只需按以下方式使用该工具即可:
nice -PRIORITY COMMAND
例如,如果我希望调度优先级为10,那么我可以这样做:
nice -10 ./test-new
以下是此例中的ps命令输出,确认优先级已更改为10。
0 S 1000 6694 6125 0 90 10 - 508 hrtime pts/18 00:00:00 test-new
Q3。 如何用负面价值做出好的工作?
正如开头已经提到的那样,善良值范围从-20到19,前者是最有利的,而后者是最不利的。 如果你想将一个负面的好价值与过程联系起来,那么你将不得不使用双连字符。
例如,
sudo nice --10 ./test-new
请注意,您需要拥有root权限才能将良好的负面价值与流程相关联。 正是因为这个原因,你的ps命令来确认新的好处应该包含'root'而不是其他用户名。
$ ps -lu root | grep test-new
下面是我们的例子中输出的命令:
4 S 0 7054 7053 0 70 -10 - 508 - pts/18 00:00:00 test-new
所以你可以看到这个过程现在运行在一个很好的-10值。
Q4。 如何将一个整数值添加到niceness?
您可以使用-n命令行选项来调整nice值,该选项将一个整数值添加到niceness中。 默认情况下,此设置值为10,但您也可以传递不同的值。
-n, --adjustment=N
例如:
nice --adjustment=5 ./test-new
这里是输出,在这种情况下产生的ps命令:
0 S 1000 7314 6125 0 85 5 - 508 hrtime pts/18 00:00:00 test-new
所以你可以看到5的优先级被设置。
Q5。 如何更改正在运行的进程的优先级?
虽然nice命令在启动程序时使用,但renice命令可让您更改正在运行的进程的优先级。 例如,以下是我们如何将已运行的“测试新”过程的优先级从5更改为15。
renice -n 15 -p 7314
-p参数用于进程ID。 以下是上述命令的输出结果:
7314 (process ID) old priority 5, new priority 15
而好的价值确实变成了15。
Q6。 如何更改属于组的所有进程的优先级?
你可以为此使用-g选项。 例如:
renice -n 20 -g youcl
上述命令将更改属于组“youcl”的所有进程的优先级。
Q7。 如何更改属于用户的所有进程的优先级?
要更改与用户关联的所有程序的优先级,请使用-u选项。 例如:
renice -n 5 -u himanshu
结论
当然,一个普通的Linux命令行用户通常不会遇到需要这些工具的情况,但是知道重要的命令行工具总是好的,而好的和renice就是其中之一。 好的是,与他们相关的学习曲线根本不陡峭。 我们已经在这里讨论了大部分的选项。 有关这些实用程序的更多信息,请转到他们的手册页 - 在这里和这里 。