nice和renice用于调整进程优先级,niceness值从-20到19,值越低优先级越高,影响CPU时间分配,普通用户只能调高自身进程优先级,root可任意调整,通过ps、top或/proc查看,renice修改运行中进程优先级,需谨慎操作避免系统不稳定。

Linux系统里,
nice
renice
nice
renice
在我看来,掌握
nice
renice
nice
当你需要启动一个耗时但非紧急的任务时,比如一个大数据分析脚本或者文件备份,就可以用
nice
基本语法:
nice -n <niceness_值> <要执行的命令>
举个例子,我要备份一个大目录,但不想让它拖慢我的开发环境:
nice -n 15 tar -zcvf /backup/my_data.tar.gz /home/user/data
这里,
tar
-n
nice
需要注意的是,普通用户只能将 niceness 值调高(即降低优先级,让进程更“nice”)。如果你想把 niceness 值调低(提高优先级,让进程更“不nice”),那就需要
root
renice
有时候,一个进程已经跑起来了,你才发现它太占用资源,或者它突然变得很重要,需要更高的优先级。这时
renice
基本语法:
renice <niceness_值> -p <进程ID>
renice <niceness_值> -u <用户名>
renice <niceness_值> -g <组名>
比如,我发现一个名为
data_processor
renice 10 -p 12345
同样地,
renice
nice
root
在我日常工作中,这俩命令简直是救星。比如,跑一个大型的
make -jN
nice -n 10 make -jN
进程优先级,或者说我们这里的niceness值,它直接影响的是Linux内核调度器(scheduler)如何分配CPU时间片。你可以把CPU想象成一个非常忙碌的医生,而进程就是排队看病的病人。优先级高的病人,医生会优先看他,或者给他更长的诊疗时间。
当系统中有多个CPU密集型进程同时运行时,调度器会根据它们的优先级来决定谁获得CPU的使用权,以及获得多长时间。一个低niceness值(高优先级)的进程,会比高niceness值(低优先级)的进程获得更多的CPU时间片,或者更频繁地被调度执行。这意味着它能够更快地完成计算任务。
这种机制对系统性能的影响是显而易见的。如果你有一个交互式的桌面环境或者一个对外提供服务的Web服务器,它们的响应速度对用户体验至关重要。如果此时一个后台数据分析任务以默认甚至更高的优先级运行,它可能会抢占大量CPU资源,导致你的桌面卡顿,或者Web服务器响应变慢,用户会明显感觉到延迟。
反之,如果我们将这些后台任务的优先级调低(提高niceness值),它们就会“礼让”给前端应用和服务,从而保证了交互式体验和服务的可用性。这并不是说低优先级的进程就完全不运行了,而是它会在高优先级进程不那么忙碌的时候,或者在它被调度器“轮到”的时候,获得CPU时间。整个系统的吞吐量可能不会有太大变化,但用户感知的响应速度会截然不同。所以,这更多是一种“公平”的调度策略,确保关键任务能及时响应,非关键任务也能有序推进。
nice
这里有个常见的误解,就是认为
nice
nice
举个例子,如果你的系统上只有一个CPU密集型进程在运行,即使它的 niceness 值是最高的 19,它仍然会占用几乎 100% 的CPU。因为没有其他进程来和它竞争,调度器自然就会把所有可用的CPU时间都给它。
但是,一旦有另一个进程(比如一个 niceness 值为 0 的进程)也开始竞争CPU,那么 niceness 值为 0 的进程就会获得更多的CPU时间片,而 niceness 值为 19 的进程获得的CPU时间就会相应减少。你可以想象成一个蛋糕,高优先级的进程能分到更大块,低优先级的进程只能分到小块。但如果只有一个人吃蛋糕,无论他优先级高低,他都能吃掉整个蛋糕。
所以,
nice
top
htop
nice
要查看一个正在运行进程的
nice
1. 使用 ps
ps -l
NI
ps -eo pid,ni,cmd
ps -eo pid,ni,cmd | grep "my_process"
2. 使用 top
htop
top
htop
top
NI
htop
NI
3. 查看 /proc
/proc
/proc/12345/stat
cat /proc/12345/stat | awk '{print $18}'修改运行中进程的nice
修改运行中进程的
nice
renice
针对单个进程:
renice <新的niceness_值> -p <进程ID>
nginx
sudo renice -5 -p 54321
sudo
root
针对某个用户的所有进程:
renice <新的niceness_值> -u <用户名>
devuser
sudo renice 10 -u devuser
针对某个组的所有进程:
renice <新的niceness_值> -g <组名>
在使用
renice
systemd
kworker
以上就是Linux nice和renice命令用法详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号