如何使“ apt-get upgrade”使用更少的资源?


26

当我sudo apt-get upgrade在低端笔记本电脑上运行很多程序包时,系统运行速度会明显下降,有时会出现3秒的屏幕冻结。

有什么方法可以将该作业标记为非常低的优先级,即使用很少的CPU,MEM和HDD?我不太在乎是否会apt-get upgrade延长两个小时的时间,我只是想继续工作,而不会在升级过程中受到干扰。

Answers:


26

该命令nice可用于操纵进程CPU调度优先级。该命令为该过程分配一个从“ -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优先级。可以将流程分为三个不同的类:

  • 如果当前没有其他进程声明空闲时间,则“ 空闲”仅给出进程磁盘的时间。
  • 尽力而为(默认类)。这使您可以分配从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
...

6
我很惊讶这获得了如此多的支持。apt-get升级受限于IO!
2015年

3
怎么样ionice
David LeBauer'1

1
因此,为了澄清起见,sudo您的命令中不是for nice,而是apt-get其本身?看来这nice -n 19 sudo apt-get upgrade对我也有用。有什么重要区别吗?
wchargin

1
@WChargin sudo nice apt-get作为root可以很好地运行,并且可以设置低于0的优先级。apt -get仍将作为root运行。nice sudo apt-get将以当前用户身份运行,因此仅允许优先级大于或等于0。apt-get将以root用户身份启动。
s3lph 2015年

1
@David我在我的回答中添加了ionice。
s3lph'1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.