如何让 `apt-get upgrade` 使用更少的资源?

use*_*992 26 apt

当我sudo apt-get upgrade在低端笔记本电脑上运行大量软件包时,系统会明显变慢,有时屏幕冻结时间长达 3 秒。

有什么方法可以将这项工作标记为非常低的优先级,即使用很少的 CPU、MEM 和 HDD?我真的不在乎是否会apt-get upgrade延长两个小时才能完成,我只想继续工作而不会在升级过程中中断。

s3l*_*lph 27

该命令nice可用于操纵进程CPU 调度优先级。该命令为进程分配一个从 -20(最重要)到 +19(最不重要)的“niceness”值。Root 可以分配任何值,其他用户只能分配正值(次要的重要性)。默认值为 0。

nice -n <niceness> <command>
Run Code Online (Sandbox Code Playgroud)

要将 apt-get 命令的优先级设置为最小值,可以使用命令

sudo nice -n 19 apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

要设置已运行进程的优先级,renice可以使用以下命令:

renice -n <niceness> -p <pid>
Run Code Online (Sandbox Code Playgroud)

编辑:感谢@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
Run Code Online (Sandbox Code Playgroud)

两个命令可以组合使用,例如

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
...
Run Code Online (Sandbox Code Playgroud)

  • 我很惊讶这有这么多赞成票。apt-get 升级受 IO 限制! (6认同)
  • `ionice`怎么样? (3认同)