使用指定的调度优先级运行程序
命令语法格式
nice [OPTION] [COMMAND [ARG]…]
命令描述
如果没有给出参数,那么nice会打印出当前的niceness值。否则,命令nice根据调整的niceness值来运行命令COMMAND。默认情况下,它的niceness增加10。
niceness值至少从-20开始(具有高优先级的进程会获得更多资源,因此会减慢其他进程)最高到19(具有较低优先级的进程,它自身运行缓慢,但对其他运行进程的速度影响较小)。某些系统可能具有更广泛的niceness范围;相反,其他系统可能会强制实施更严格的限制。如果尝试将niceness设置为支持范围之外的数值,则会被视为尝试使用系统支持的最小值或最大值。
不要把niceness与调度优先级混淆,调度优先级允许应用程序确定调度线程的运行顺序。与优先级不同,niceness是对调度程序的建议,调度程序可以自由忽略。此外,作为一个术语,POSIX根据一个nice值定义了nice的行为,这是一个niceness和最小niceness之间的非负差异。虽然nice符合POSIX,但它的文档和诊断使用术语“niceness”来与历史实践兼容。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
-n adjustment, –adjustment=adjustment
在命令的niceness中添加由adjustment指定的值,而不是默认的10。如果adjustment是负数值的,并且你缺少适当的权限,则命令nice会发出警告,此外就像指定adjustment为零一样。
为了兼容性,命令nice还支持过时的选项语法-adjustment,但是新脚本中应该使用新的–adjustment(-n)选项调整。
–help
显示帮助并退出。
–version
显示版本信息。
注意事项
参数COMMAND不能是特殊的内置程序(请参阅特殊内置实用程序)。
由于Shell别名和内置的nice函数,在脚本中直接使用nice可能会获得与此处描述的功能不同的功能。通过env调用它(即env nice)以避免Shell的干扰。或者通过绝对路径进行调用。
注意,要更改现有进程的niceness值,需要使用renice(1)命令。
命令nice仅安装在具有POSIX函数setpriority系统上,因此可移植脚本不应依赖于非POSIX平台中nice的存在。
退出状态
0 没有指定niceness值,并打印当前的niceness值。
125 命令nice自身发生错误。
126 找到命令COMMAND,但是无法调用。
127 无法找到命令COMMAND。
其他的状态值则是由命令COMMAND返回的。
使用示例
运行非交互式程序有时很有用:
由于nice打印出当前的niceness值,你可以通过自己调用自己来演示它是如何工作的:
默认行为是将Nicessness值增加“10”:
0
# nice nice
10
# nice -n 10 nice
10
参数adjustment是相对于当前的niceness值。在下一个例子中,第一个nice的使用默认的10来调用第二个nice,然后它以3来运行最后一个nice:
13
指定一个大于支持范围以外的niceness值会被重置为支持的最大值:
只有特权用户才能运行具有较低优点的进程:
nice: cannot set niceness: Permission denied
0
相关手册
nice(2), renice(1)
查看在线手册:http://www.gnu.org/software/coreutils/nice
查看info手册:info ‘(coreutils) nice invocation’
参考文献
- man 1 nice, version GNU coreutils 8.28
更新日志
- 07/02/2018 创建文章