当我sudo apt-get upgrade
在低端笔记本电脑上运行大量软件包时,我发现系统速度明显变慢,有时屏幕甚至会冻结 3 秒。
有没有办法将这个任务标记为极低优先级,即使用很少的 CPU、MEM 和 HDD?我并不关心它是否会apt-get upgrade
延长两个小时才能完成,我只想在升级期间不受干扰地继续工作。
答案1
该命令nice
可用于操纵进程CPU 调度优先级。该命令为进程分配一个从 -20(最重要)到 +19(最不重要)的“niceness”值。Root 可以分配任何值,其他用户只能分配正值(次要重要性)。默认值为 0。
nice -n <niceness> <command>
要将 apt-get 命令的优先级设置为最低值,可以使用以下命令
sudo nice -n 19 apt-get upgrade
要设置已经运行的进程的优先级,renice
可以使用以下命令:
renice -n <niceness> -p <pid>
编辑:感谢@David提到该ionice
命令,它允许您操作磁盘 I/O 优先级。它可以把一个进程分成三个不同的类:
- 闲置的如果此刻没有其他进程声明该磁盘时间,则仅向该进程提供磁盘时间。
- 最大努力(默认类别)。这允许您分配从 0 到 7 的优先级,其中 0 最重要,7 最不重要。您可以尝试分配
-n 7
优先级。 - 即时的进程优先于其他一切进行处理,当其他进程需要磁盘 I/O 时,立即暂停这些进程的磁盘 I/O。小心使用!
IOnice 结合了 nice 和 renice 的语法:
ionice [-c class] [-n level] command #To start a new process
ionice [-c class] [-n level] -p pid #To change a running process
两个命令可以组合使用,例如
sudo ionice -n 7 nice -n 19 apt-get upgrade #Omitting the -c switch will assign Best-effort
sudo nice -n 19 ionice -n 7 apt-get upgrade
nice -n 19 ionice -n 7 sudo apt-get upgrade
...