问题描述
当我在low-end笔记本电脑上运行带有很多软件包的sudo apt-get upgrade
时,系统速度变慢,有时最多可冻结3秒。
有什么方法可以将该作业标记为非常低的优先级,即使用很少的CPU,MEM和HDD?我不太在乎是否会使apt-get upgrade
延长两个小时的时间,我只是想继续工作,而不会在升级过程中受到干扰。
最佳办法
命令nice
可用于操纵进程CPU调度优先级。该命令将”niceness”值从-20(最重要)到+19(最不重要)分配给该过程。根可以分配任何值,其他用户只能分配正值(次要重要性)。默认值为0。
nice -n <niceness> <command>
要将apt-get命令的优先级设置为最小值,可以使用以下命令
sudo nice -n 19 apt-get upgrade
要设置已经运行的进程的优先级,可以使用命令renice
:
renice -n <niceness> -p <pid>
编辑:感谢@David提到ionice
命令,该命令可让您操作磁盘I /O优先级。可以将流程分为三个不同的类:
-
如果当前没有其他进程声明空闲时间,则“空闲”仅给出进程磁盘的时间。
-
Best-effort(默认类)。这使您可以分配从0到7的优先级,其中0最重要,最小7。您可以尝试将
-n 7
分配为优先级。 -
实时进程要先处理所有其他事务,并在自己需要时立即挂起其他进程的磁盘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
...